Layout_builders: introduce posets for better performances
[nit.git] / c_src / compiling___compiling_icode._sep.c
index ba05da8..20f99ce 100644 (file)
@@ -1,5 +1,6 @@
 /* This C file is generated by NIT to compile module compiling___compiling_icode. */
 #include "compiling___compiling_icode._sep.h"
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___register[] = "compiling_icode::I2CCompilerVisitor::register";
 val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
@@ -18,10 +19,11 @@ 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;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -32,7 +34,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,58 +48,58 @@ 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]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   } else {
-    REGB1 = TAG_Bool(false);
+    REGB1 = TAG_Bool(0);
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
     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 */
+    /* 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:41 */
+    /* compiling/compiling_icode.nit:42 */
     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);
+        REGB1 = TAG_Bool(0);
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ../lib/standard/kernel.nit:230 */
         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 +108,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 */
+      /* 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:45 */
+      /* 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,17 +154,17 @@ 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]);
           REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
         } else {
-          REGB1 = TAG_Bool(false);
+          REGB1 = TAG_Bool(0);
           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 +172,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 +202,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 +210,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 +241,11 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
           }
         }
       }
-      /* ./compiling//compiling_icode.nit:59 */
+      /* compiling/compiling_icode.nit:60 */
       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 */
+      /* 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:61 */
+      /* compiling/compiling_icode.nit:62 */
       fra.me.REG[2] = fra.me.REG[4];
       goto label2;
     }
@@ -252,26 +254,28 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___registers[] = "compiling_icode::I2CCompilerVisitor::registers";
 val_t compiling___compiling_icode___I2CCompilerVisitor___registers(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_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;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./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,24 +285,26 @@ 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;
     fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___registers;
     fra.me.has_broke = 0;
     fra.me.REG_size = 1;
+    fra.me.nitni_local_ref_head = NULL;
     fra.me.REG[0] = NIT_NULL;
     fra.me.closure_ctx = closctx_param;
     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;
     return;
   }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___new_number[] = "compiling_icode::I2CCompilerVisitor::new_number";
 val_t compiling___compiling_icode___I2CCompilerVisitor___new_number(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -306,24 +312,25 @@ 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.nitni_local_ref_head = NULL;
   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:238 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./compiling//compiling_icode.nit:80 */
+  /* compiling/compiling_icode.nit:81 */
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____last_number(fra.me.REG[0]) = REGB1;
-  /* ./compiling//compiling_icode.nit:81 */
+  /* 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;
@@ -331,6 +338,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___new_number(val_t p0){
   stack_frame_head = fra.me.prev;
   return REGB1;
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___lab[] = "compiling_icode::I2CCompilerVisitor::lab";
 val_t compiling___compiling_icode___I2CCompilerVisitor___lab(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
@@ -339,10 +347,11 @@ 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;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -350,26 +359,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 +403,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;
   }
@@ -410,130 +419,143 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___lab(val_t p0, val_t p1)
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___closures[] = "compiling_icode::I2CCompilerVisitor::closures";
 val_t compiling___compiling_icode___I2CCompilerVisitor___closures(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_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.nitni_local_ref_head = NULL;
   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;
   return fra.me.REG[0];
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___clostypes[] = "compiling_icode::I2CCompilerVisitor::clostypes";
 val_t compiling___compiling_icode___I2CCompilerVisitor___clostypes(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_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.nitni_local_ref_head = NULL;
   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;
   return fra.me.REG[0];
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___local_labels[] = "compiling_icode::I2CCompilerVisitor::local_labels";
 val_t compiling___compiling_icode___I2CCompilerVisitor___local_labels(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_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.nitni_local_ref_head = NULL;
   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;
   return fra.me.REG[0];
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___local_labels__eq[] = "compiling_icode::I2CCompilerVisitor::local_labels=";
 void compiling___compiling_icode___I2CCompilerVisitor___local_labels__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   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;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   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;
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___escaped_labels[] = "compiling_icode::I2CCompilerVisitor::escaped_labels";
 val_t compiling___compiling_icode___I2CCompilerVisitor___escaped_labels(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_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.nitni_local_ref_head = NULL;
   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;
   return fra.me.REG[0];
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___escaped_labels__eq[] = "compiling_icode::I2CCompilerVisitor::escaped_labels=";
 void compiling___compiling_icode___I2CCompilerVisitor___escaped_labels__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   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;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   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;
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___register_escape_label[] = "compiling_icode::I2CCompilerVisitor::register_escape_label";
 val_t compiling___compiling_icode___I2CCompilerVisitor___register_escape_label(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -542,55 +564,56 @@ 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;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./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:238 */
     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;
   }
@@ -598,6 +621,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register_escape_label(v
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___add_label[] = "compiling_icode::I2CCompilerVisitor::add_label";
 void compiling___compiling_icode___I2CCompilerVisitor___add_label(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -606,26 +630,27 @@ 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;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = 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_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 +665,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]);
@@ -660,8 +685,9 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_label(val_t p0, val_
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___add_goto[] = "compiling_icode::I2CCompilerVisitor::add_goto";
 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,273 +699,294 @@ 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.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_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 */
+    /* 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;
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___marks_to_seq[] = "compiling_icode::I2CCompilerVisitor::marks_to_seq";
 val_t compiling___compiling_icode___I2CCompilerVisitor___marks_to_seq(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_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.nitni_local_ref_head = NULL;
   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;
   return fra.me.REG[0];
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___closure[] = "compiling_icode::I2CCompilerVisitor::closure";
 val_t compiling___compiling_icode___I2CCompilerVisitor___closure(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_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.nitni_local_ref_head = NULL;
   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;
   return REGB0;
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___closure__eq[] = "compiling_icode::I2CCompilerVisitor::closure=";
 void compiling___compiling_icode___I2CCompilerVisitor___closure__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_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.nitni_local_ref_head = NULL;
   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;
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___visitor[] = "compiling_icode::I2CCompilerVisitor::visitor";
 val_t compiling___compiling_icode___I2CCompilerVisitor___visitor(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_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.nitni_local_ref_head = NULL;
   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;
   return fra.me.REG[0];
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___iroutine[] = "compiling_icode::I2CCompilerVisitor::iroutine";
 val_t compiling___compiling_icode___I2CCompilerVisitor___iroutine(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_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.nitni_local_ref_head = NULL;
   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;
   return fra.me.REG[0];
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___return_label[] = "compiling_icode::I2CCompilerVisitor::return_label";
 val_t compiling___compiling_icode___I2CCompilerVisitor___return_label(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_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.nitni_local_ref_head = NULL;
   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];
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___return_label__eq[] = "compiling_icode::I2CCompilerVisitor::return_label=";
 void compiling___compiling_icode___I2CCompilerVisitor___return_label__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_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;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   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;
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___add_decl[] = "compiling_icode::I2CCompilerVisitor::add_decl";
 void compiling___compiling_icode___I2CCompilerVisitor___add_decl(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   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;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   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;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___new_instr[] = "compiling_icode::I2CCompilerVisitor::new_instr";
 val_t compiling___compiling_icode___I2CCompilerVisitor___new_instr(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -950,27 +997,28 @@ 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;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   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 */
+  /* compiling/compiling_icode.nit:168 */
   fra.me.REG[2] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____next_location(fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:168 */
+  /* compiling/compiling_icode.nit:169 */
   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);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
@@ -979,10 +1027,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);
@@ -991,20 +1039,20 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___new_instr(val_t p0){
       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:171 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    /* 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 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    /* compiling/compiling_icode.nit:173 */
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString(":");
       REGB0 = TAG_Int(1);
@@ -1013,16 +1061,16 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___new_instr(val_t p0){
       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:173 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    /* 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 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    /* compiling/compiling_icode.nit:175 */
     if (!once_value_3) {
       fra.me.REG[2] = BOX_NativeString(" */\n");
       REGB0 = TAG_Int(4);
@@ -1031,19 +1079,20 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___new_instr(val_t p0){
       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]);
-    /* ./compiling//compiling_icode.nit:175 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    /* 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;
   return fra.me.REG[1];
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___add_instr[] = "compiling_icode::I2CCompilerVisitor::add_instr";
 void compiling___compiling_icode___I2CCompilerVisitor___add_instr(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -1051,17 +1100,18 @@ 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;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   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]);
+  fra.me.REG[1] = CALL_compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("\n");
     REGB0 = TAG_Int(1);
@@ -1070,65 +1120,72 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_instr(val_t p0, val_
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
   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]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___indent[] = "compiling_icode::I2CCompilerVisitor::indent";
 void compiling___compiling_icode___I2CCompilerVisitor___indent(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_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.nitni_local_ref_head = NULL;
   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;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___unindent[] = "compiling_icode::I2CCompilerVisitor::unindent";
 void compiling___compiling_icode___I2CCompilerVisitor___unindent(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_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.nitni_local_ref_head = NULL;
   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;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___add_assignment[] = "compiling_icode::I2CCompilerVisitor::add_assignment";
 void compiling___compiling_icode___I2CCompilerVisitor___add_assignment(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_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;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./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;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___add_location[] = "compiling_icode::I2CCompilerVisitor::add_location";
 void compiling___compiling_icode___I2CCompilerVisitor___add_location(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
@@ -1137,10 +1194,11 @@ 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;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -1148,15 +1206,15 @@ 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 */
+  /* compiling/compiling_icode.nit:209 */
   fra.me.REG[2] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____last_location(fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:209 */
+  /* compiling/compiling_icode.nit:210 */
   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);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
@@ -1164,14 +1222,14 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_location(val_t p0, v
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    REGB0 = TAG_Bool(true);
+    REGB0 = TAG_Bool(1);
   } else {
     REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
       REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(false);
+        REGB2 = TAG_Bool(0);
         REGB1 = REGB2;
       } else {
         REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
@@ -1183,15 +1241,15 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_location(val_t p0, v
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./compiling//compiling_icode.nit:210 */
+  /* compiling/compiling_icode.nit:211 */
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____last_location(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:211 */
+  /* compiling/compiling_icode.nit:212 */
   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);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
@@ -1202,12 +1260,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]));
@@ -1215,7 +1273,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_location(val_t p0, v
     } else {
       REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(false);
+        REGB1 = TAG_Bool(0);
         REGB0 = REGB1;
       } else {
         REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
@@ -1223,65 +1281,68 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_location(val_t p0, v
       }
     }
   } else {
-    REGB1 = TAG_Bool(false);
+    REGB1 = TAG_Bool(0);
     REGB0 = REGB1;
   }
   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:230 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
-      /* ./compiling//compiling_icode.nit:211 */
+      /* compiling/compiling_icode.nit:212 */
       REGB2 = REGB1;
     }
   } else {
-    REGB1 = TAG_Bool(false);
+    REGB1 = TAG_Bool(0);
     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);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___basecname[] = "compiling_icode::I2CCompilerVisitor::basecname";
 val_t compiling___compiling_icode___I2CCompilerVisitor___basecname(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_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.nitni_local_ref_head = NULL;
   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;
   return fra.me.REG[0];
 }
+static const char LOCATE_compiling___compiling_icode___I2CCompilerVisitor___init[] = "compiling_icode::I2CCompilerVisitor::init";
 void compiling___compiling_icode___I2CCompilerVisitor___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_compiling___compiling_icode___I2CCompilerVisitor].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -1289,10 +1350,11 @@ 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;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -1301,16 +1363,17 @@ 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 */
+  /* compiling/compiling_icode.nit:224 */
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____visitor(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:224 */
+  /* compiling/compiling_icode.nit:225 */
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____iroutine(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./compiling//compiling_icode.nit:225 */
+  /* 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;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___IRoutine___compile_signature_to_c[] = "compiling_icode::IRoutine::compile_signature_to_c";
 val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(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[11];} fra;
   val_t REGB0;
@@ -1362,10 +1425,11 @@ 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;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -1384,17 +1448,17 @@ 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 */
+  /* compiling/compiling_icode.nit:237 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* ./compiling//compiling_icode.nit:237 */
+  /* compiling/compiling_icode.nit:238 */
   fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
-  /* ./compiling//compiling_icode.nit:238 */
+  /* compiling/compiling_icode.nit:239 */
   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);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
@@ -1405,19 +1469,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:355 */
   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:235 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ../lib/standard/kernel.nit:355 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./compiling//compiling_icode.nit:239 */
+      /* compiling/compiling_icode.nit:240 */
       REGB2 = REGB0;
-      /* ./compiling//compiling_icode.nit:240 */
+      /* 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 +1511,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,26 +1536,26 @@ 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:357 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:238 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ../lib/standard/kernel.nit:357 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ../lib/standard/kernel.nit:355 */
       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)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
@@ -1495,7 +1564,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 +1574,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:355 */
     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:235 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ../lib/standard/kernel.nit:355 */
       if (UNTAG_Bool(REGB2)) {
-        /* ./compiling//compiling_icode.nit:245 */
+        /* compiling/compiling_icode.nit:246 */
         REGB2 = REGB0;
-        /* ./compiling//compiling_icode.nit:246 */
+        /* 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 +1629,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 */
+        /* compiling/compiling_icode.nit:249 */
         fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
-        /* ./compiling//compiling_icode.nit:249 */
+        /* 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 +1654,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:355 */
         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:235 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
-          /* ./../lib/standard//kernel.nit:335 */
+          /* ../lib/standard/kernel.nit:355 */
           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 +1678,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:357 */
             REGB5 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ../lib/standard/kernel.nit:238 */
             REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB5));
-            /* ./../lib/standard//kernel.nit:337 */
+            /* ../lib/standard/kernel.nit:357 */
             REGB3 = REGB5;
           } else {
-            /* ./../lib/standard//kernel.nit:335 */
+            /* ../lib/standard/kernel.nit:355 */
             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,14 +1699,14 @@ 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)) {
         } else {
           REGB4 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
           if (UNTAG_Bool(REGB4)) {
-            REGB4 = TAG_Bool(false);
+            REGB4 = TAG_Bool(0);
             REGB3 = REGB4;
           } else {
             REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
@@ -1646,7 +1725,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 +1778,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 +1803,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,26 +1828,26 @@ 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:357 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ../lib/standard/kernel.nit:238 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ../lib/standard/kernel.nit:357 */
         REGB0 = REGB2;
       } else {
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ../lib/standard/kernel.nit:355 */
         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 {
     REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
@@ -1779,7 +1858,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,14 +1867,14 @@ 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)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
@@ -1814,10 +1893,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 +1906,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,13 +1918,13 @@ 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 {
     REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
@@ -1854,11 +1933,12 @@ 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:271 */
     REGB0 = TAG_Int(5);
     fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_29) {
-      fra.me.REG[7] = BOX_NativeString("static const char * const LOCATE_");
-      REGB0 = TAG_Int(33);
+      fra.me.REG[7] = BOX_NativeString("static const char LOCATE_");
+      REGB0 = TAG_Int(25);
       fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
       once_value_29 = fra.me.REG[7];
       register_static_object(&once_value_29);
@@ -1867,8 +1947,8 @@ 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[7]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[2]);
     if (!once_value_30) {
-      fra.me.REG[7] = BOX_NativeString(" = \"");
-      REGB0 = TAG_Int(4);
+      fra.me.REG[7] = BOX_NativeString("[] = \"");
+      REGB0 = TAG_Int(6);
       fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
       once_value_30 = fra.me.REG[7];
       register_static_object(&once_value_30);
@@ -1886,9 +1966,9 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
     fra.me.REG[3] = fra.me.REG[3];
     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]);
+    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
   }
-  /* ./compiling//compiling_icode.nit:270 */
+  /* 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_32) {
@@ -1932,7 +2012,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:274 */
   REGB0 = TAG_Int(7);
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_36) {
@@ -1976,7 +2056,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:275 */
   REGB0 = TAG_Int(7);
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_40) {
@@ -2020,14 +2100,15 @@ 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 */
+  /* compiling/compiling_icode.nit:276 */
   CALL_compiling___compiling_base___CompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:274 */
+  /* compiling/compiling_icode.nit:277 */
   goto label44;
   label44: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[6];
 }
+static const char LOCATE_compiling___compiling_icode___IRoutine___compile_inside_to_c[] = "compiling_icode::IRoutine::compile_inside_to_c";
 val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
   val_t REGB0;
@@ -2050,33 +2131,35 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   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_14; /* Once value */
       static val_t once_value_15; /* Once value */
-      static val_t once_value_17; /* Once value */
+      static val_t once_value_16; /* Once value */
       static val_t once_value_18; /* Once value */
-    static val_t once_value_20; /* Once value */
+      static val_t once_value_19; /* 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_26; /* Once value */
+    static val_t once_value_24; /* Once value */
         static val_t once_value_27; /* Once value */
-        static val_t once_value_29; /* Once value */
+        static val_t once_value_28; /* Once value */
         static val_t once_value_30; /* Once value */
-            static val_t once_value_31; /* 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_31; /* Once value */
+            static val_t once_value_32; /* 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_38; /* Once value */
-  static val_t once_value_40; /* Once value */
+        static val_t once_value_39; /* Once value */
   static val_t once_value_41; /* Once value */
+  static val_t once_value_42; /* 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 = 280;
   fra.me.meth = LOCATE_compiling___compiling_icode___IRoutine___compile_inside_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -2090,16 +2173,16 @@ 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 */
+  /* compiling/compiling_icode.nit:284 */
   REGB0 = TAG_Int(0);
-  /* ./compiling//compiling_icode.nit:282 */
+  /* compiling/compiling_icode.nit:285 */
   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)) {
   } else {
     REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      REGB2 = TAG_Bool(false);
+      REGB2 = TAG_Bool(0);
       REGB1 = REGB2;
     } else {
       REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
@@ -2108,23 +2191,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:286 */
     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, 286);
     }
     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:289 */
   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:237 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
-  /* ./compiling//compiling_icode.nit:286 */
+  /* compiling/compiling_icode.nit:289 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./compiling//compiling_icode.nit:287 */
+    /* compiling/compiling_icode.nit:290 */
     REGB2 = TAG_Int(3);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
     if (!once_value_1) {
@@ -2138,9 +2226,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:240 */
     REGB1 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
-    /* ./compiling//compiling_icode.nit:287 */
+    /* compiling/compiling_icode.nit:290 */
     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 +2243,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:292 */
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("struct {struct stack_frame_t me;} fra;");
       REGB1 = TAG_Int(38);
@@ -2166,7 +2254,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:294 */
   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 +2264,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:295 */
   REGB1 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_5) {
@@ -2203,7 +2291,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:296 */
   REGB1 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_7) {
@@ -2228,7 +2316,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:297 */
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_9) {
@@ -2253,7 +2341,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:298 */
   if (!once_value_11) {
     fra.me.REG[3] = BOX_NativeString("fra.me.has_broke = 0;");
     REGB0 = TAG_Int(21);
@@ -2263,7 +2351,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:299 */
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_12) {
@@ -2289,111 +2377,131 @@ 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 */
+  if (!once_value_14) {
+    fra.me.REG[3] = BOX_NativeString("fra.me.nitni_local_ref_head = NULL;");
+    REGB0 = TAG_Int(35);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_14 = fra.me.REG[3];
+    register_static_object(&once_value_14);
+  } else fra.me.REG[3] = once_value_14;
+  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:303 */
   REGB0 = TAG_Int(0);
   REGB1 = CALL_analysis___allocate_iregister_slots___IRoutine___std_slots_nb(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//kernel.nit:335 */
+  /* ../lib/standard/kernel.nit:355 */
   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:235 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ../lib/standard/kernel.nit:355 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./compiling//compiling_icode.nit:299 */
+      /* compiling/compiling_icode.nit:303 */
       REGB2 = REGB0;
-      /* ./compiling//compiling_icode.nit:300 */
+      /* 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_14) {
+      if (!once_value_15) {
         fra.me.REG[4] = BOX_NativeString("fra.me.REG[");
         REGB3 = TAG_Int(11);
         fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB3);
-        once_value_14 = fra.me.REG[4];
-        register_static_object(&once_value_14);
-      } else fra.me.REG[4] = once_value_14;
+        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];
       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(REGB2)(REGB2);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-      if (!once_value_15) {
+      if (!once_value_16) {
         fra.me.REG[4] = BOX_NativeString("] = NIT_NULL;");
         REGB2 = TAG_Int(13);
         fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-        once_value_15 = fra.me.REG[4];
-        register_static_object(&once_value_15);
-      } else fra.me.REG[4] = once_value_15;
+        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];
       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:357 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:238 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ../lib/standard/kernel.nit:357 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
-      goto label16;
+      /* ../lib/standard/kernel.nit:355 */
+      goto label17;
     }
   }
-  label16: while(0);
-  /* ./compiling//compiling_icode.nit:302 */
+  label17: while(0);
+  /* compiling/compiling_icode.nit:306 */
   REGB0 = TAG_Int(0);
   REGB1 = CALL_analysis___allocate_iregister_slots___IRoutine___tag_slots_nb(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//kernel.nit:335 */
+  /* ../lib/standard/kernel.nit:355 */
   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:235 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ../lib/standard/kernel.nit:355 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./compiling//compiling_icode.nit:302 */
+      /* compiling/compiling_icode.nit:306 */
       REGB2 = REGB0;
-      /* ./compiling//compiling_icode.nit:303 */
+      /* compiling/compiling_icode.nit:307 */
       REGB3 = TAG_Int(3);
       fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
-      if (!once_value_17) {
+      if (!once_value_18) {
         fra.me.REG[4] = BOX_NativeString("val_t REGB");
         REGB3 = TAG_Int(10);
         fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB3);
-        once_value_17 = fra.me.REG[4];
-        register_static_object(&once_value_17);
-      } else fra.me.REG[4] = once_value_17;
+        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];
       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(REGB2)(REGB2);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-      if (!once_value_18) {
+      if (!once_value_19) {
         fra.me.REG[4] = BOX_NativeString(";");
         REGB2 = TAG_Int(1);
         fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-        once_value_18 = fra.me.REG[4];
-        register_static_object(&once_value_18);
-      } else fra.me.REG[4] = once_value_18;
+        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];
       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:357 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:238 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ../lib/standard/kernel.nit:357 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
-      goto label19;
+      /* ../lib/standard/kernel.nit:355 */
+      goto label20;
     }
   }
-  label19: while(0);
-  /* ./compiling//compiling_icode.nit:305 */
+  label20: while(0);
+  /* compiling/compiling_icode.nit:309 */
   fra.me.REG[3] = CALL_icode___icode_base___IRoutine___closure_decls(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:306 */
+  /* compiling/compiling_icode.nit:310 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
@@ -2402,70 +2510,70 @@ 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:311 */
     REGB0 = TAG_Int(3);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-    if (!once_value_20) {
+    if (!once_value_21) {
       fra.me.REG[5] = BOX_NativeString("fun_t CREG[");
       REGB0 = TAG_Int(11);
       fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
-      once_value_20 = fra.me.REG[5];
-      register_static_object(&once_value_20);
-    } else fra.me.REG[5] = once_value_20;
+      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_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, 311);
     }
     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);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-    if (!once_value_21) {
+    if (!once_value_22) {
       fra.me.REG[5] = BOX_NativeString("];");
       REGB0 = TAG_Int(2);
       fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
-      once_value_21 = fra.me.REG[5];
-      register_static_object(&once_value_21);
-    } else fra.me.REG[5] = once_value_21;
+      once_value_22 = fra.me.REG[5];
+      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]);
     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 */
-    if (!once_value_22) {
+    /* compiling/compiling_icode.nit:312 */
+    if (!once_value_23) {
       fra.me.REG[4] = BOX_NativeString("fra.me.closure_ctx = closctx_param;");
       REGB0 = TAG_Int(35);
       fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-      once_value_22 = fra.me.REG[4];
-      register_static_object(&once_value_22);
-    } else fra.me.REG[4] = once_value_22;
+      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_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-    /* ./compiling//compiling_icode.nit:309 */
-    if (!once_value_23) {
+    /* compiling/compiling_icode.nit:313 */
+    if (!once_value_24) {
       fra.me.REG[4] = BOX_NativeString("fra.me.closure_funs = CREG;");
       REGB0 = TAG_Int(27);
       fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-      once_value_23 = fra.me.REG[4];
-      register_static_object(&once_value_23);
-    } else fra.me.REG[4] = once_value_23;
+      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];
     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:315 */
   REGB0 = TAG_Int(0);
   fra.me.REG[4] = REGB0;
-  /* ./compiling//compiling_icode.nit:312 */
+  /* compiling/compiling_icode.nit:316 */
   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 */
+  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_25));
+  /* compiling/compiling_icode.nit:320 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
@@ -2474,171 +2582,191 @@ 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:321 */
     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, 321);
     }
     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:355 */
     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:235 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ../lib/standard/kernel.nit:355 */
       if (UNTAG_Bool(REGB2)) {
-        /* ./compiling//compiling_icode.nit:317 */
+        /* compiling/compiling_icode.nit:321 */
         REGB2 = REGB0;
-        /* ./compiling//compiling_icode.nit:318 */
+        /* compiling/compiling_icode.nit:322 */
         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, 322);
         }
-        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:323 */
         REGB3 = TAG_Int(5);
         fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
-        if (!once_value_26) {
+        if (!once_value_27) {
           fra.me.REG[6] = BOX_NativeString("CREG[");
           REGB3 = TAG_Int(5);
           fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
-          once_value_26 = fra.me.REG[6];
-          register_static_object(&once_value_26);
-        } else fra.me.REG[6] = once_value_26;
+          once_value_27 = fra.me.REG[6];
+          register_static_object(&once_value_27);
+        } else fra.me.REG[6] = once_value_27;
         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(REGB2)(REGB2);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-        if (!once_value_27) {
+        if (!once_value_28) {
           fra.me.REG[6] = BOX_NativeString("] = ");
           REGB3 = TAG_Int(4);
           fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
-          once_value_27 = fra.me.REG[6];
-          register_static_object(&once_value_27);
-        } else fra.me.REG[6] = once_value_27;
+          once_value_28 = fra.me.REG[6];
+          register_static_object(&once_value_28);
+        } else fra.me.REG[6] = once_value_28;
         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_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:238 */
         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:236 */
         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:235 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
-          REGB5 = TAG_Bool(false);
+          /* ../lib/standard/collection/array.nit:280 */
+          REGB5 = TAG_Bool(0);
           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:724 */
         fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB3)];
-        /* ./../lib/standard//collection//array.nit:246 */
-        goto label28;
-        label28: while(0);
-        /* ./compiling//compiling_icode.nit:319 */
+        /* ../lib/standard/collection/array.nit:281 */
+        goto label29;
+        label29: while(0);
+        /* compiling/compiling_icode.nit:323 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-        if (!once_value_29) {
+        if (!once_value_30) {
           fra.me.REG[6] = BOX_NativeString(";");
           REGB3 = TAG_Int(1);
           fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB3);
-          once_value_29 = fra.me.REG[6];
-          register_static_object(&once_value_29);
-        } else fra.me.REG[6] = once_value_29;
+          once_value_30 = fra.me.REG[6];
+          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[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:324 */
         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:325 */
         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 */
+        /* compiling/compiling_icode.nit:326 */
         fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-        /* ./compiling//compiling_icode.nit:323 */
-        if (!once_value_30) {
+        /* compiling/compiling_icode.nit:327 */
+        if (!once_value_31) {
           fra.me.REG[7] = BOX_NativeString("struct stack_frame_t *");
           REGB2 = TAG_Int(22);
           fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-          once_value_30 = fra.me.REG[7];
-          register_static_object(&once_value_30);
-        } else fra.me.REG[7] = once_value_30;
+          once_value_31 = fra.me.REG[7];
+          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]);
-        /* ./compiling//compiling_icode.nit:324 */
+        /* compiling/compiling_icode.nit:328 */
         REGB2 = TAG_Int(0);
         REGB3 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[6])(fra.me.REG[6]);
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ../lib/standard/kernel.nit:355 */
         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:235 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
-          /* ./../lib/standard//kernel.nit:335 */
+          /* ../lib/standard/kernel.nit:355 */
           if (UNTAG_Bool(REGB4)) {
-            /* ./compiling//compiling_icode.nit:325 */
-            if (!once_value_31) {
+            /* compiling/compiling_icode.nit:329 */
+            if (!once_value_32) {
               fra.me.REG[7] = BOX_NativeString("val_t");
               REGB4 = TAG_Int(5);
               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB4);
-              once_value_31 = fra.me.REG[7];
-              register_static_object(&once_value_31);
-            } else fra.me.REG[7] = once_value_31;
+              once_value_32 = fra.me.REG[7];
+              register_static_object(&once_value_32);
+            } else fra.me.REG[7] = once_value_32;
             fra.me.REG[7] = fra.me.REG[7];
-            /* ./compiling//compiling_icode.nit:326 */
+            /* compiling/compiling_icode.nit:330 */
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
-            /* ./../lib/standard//kernel.nit:337 */
+            /* ../lib/standard/kernel.nit:357 */
             REGB4 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ../lib/standard/kernel.nit:238 */
             REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
-            /* ./../lib/standard//kernel.nit:337 */
+            /* ../lib/standard/kernel.nit:357 */
             REGB2 = REGB4;
           } else {
-            /* ./../lib/standard//kernel.nit:335 */
-            goto label32;
+            /* ../lib/standard/kernel.nit:355 */
+            goto label33;
           }
         }
-        label32: while(0);
-        /* ./compiling//compiling_icode.nit:328 */
-        if (!once_value_33) {
+        label33: while(0);
+        /* compiling/compiling_icode.nit:332 */
+        if (!once_value_34) {
           fra.me.REG[7] = BOX_NativeString("void");
           REGB2 = TAG_Int(4);
           fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-          once_value_33 = fra.me.REG[7];
-          register_static_object(&once_value_33);
-        } else fra.me.REG[7] = once_value_33;
+          once_value_34 = fra.me.REG[7];
+          register_static_object(&once_value_34);
+        } else fra.me.REG[7] = once_value_34;
         fra.me.REG[7] = fra.me.REG[7];
-        /* ./compiling//compiling_icode.nit:329 */
+        /* compiling/compiling_icode.nit:333 */
         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)) {
         } else {
           REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
-            REGB3 = TAG_Bool(false);
+            REGB3 = TAG_Bool(0);
             REGB2 = REGB3;
           } else {
             REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
@@ -2647,112 +2775,112 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
         }
         REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
         if (UNTAG_Bool(REGB2)) {
-          if (!once_value_34) {
+          if (!once_value_35) {
             fra.me.REG[6] = BOX_NativeString("val_t");
             REGB2 = TAG_Int(5);
             fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
-            once_value_34 = fra.me.REG[6];
-            register_static_object(&once_value_34);
-          } else fra.me.REG[6] = once_value_34;
+            once_value_35 = fra.me.REG[6];
+            register_static_object(&once_value_35);
+          } else fra.me.REG[6] = once_value_35;
           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:334 */
         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);
-        if (!once_value_35) {
+        if (!once_value_36) {
           fra.me.REG[9] = BOX_NativeString("");
           REGB2 = TAG_Int(0);
           fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB2);
-          once_value_35 = fra.me.REG[9];
-          register_static_object(&once_value_35);
-        } else fra.me.REG[9] = once_value_35;
+          once_value_36 = fra.me.REG[9];
+          register_static_object(&once_value_36);
+        } else fra.me.REG[9] = once_value_36;
         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]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
-        if (!once_value_36) {
+        if (!once_value_37) {
           fra.me.REG[7] = BOX_NativeString(" (*)(");
           REGB2 = TAG_Int(5);
           fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-          once_value_36 = fra.me.REG[7];
-          register_static_object(&once_value_36);
-        } else fra.me.REG[7] = once_value_36;
+          once_value_37 = fra.me.REG[7];
+          register_static_object(&once_value_37);
+        } else fra.me.REG[7] = once_value_37;
         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_37) {
+        if (!once_value_38) {
           fra.me.REG[7] = BOX_NativeString(", ");
           REGB2 = TAG_Int(2);
           fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-          once_value_37 = fra.me.REG[7];
-          register_static_object(&once_value_37);
-        } else fra.me.REG[7] = once_value_37;
+          once_value_38 = fra.me.REG[7];
+          register_static_object(&once_value_38);
+        } else fra.me.REG[7] = once_value_38;
         fra.me.REG[7] = fra.me.REG[7];
         fra.me.REG[7] = CALL_standard___string___Collection___join(fra.me.REG[5])(fra.me.REG[5], 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_38) {
+        if (!once_value_39) {
           fra.me.REG[7] = BOX_NativeString(")");
           REGB2 = TAG_Int(1);
           fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-          once_value_38 = fra.me.REG[7];
-          register_static_object(&once_value_38);
-        } else fra.me.REG[7] = once_value_38;
+          once_value_39 = fra.me.REG[7];
+          register_static_object(&once_value_39);
+        } else fra.me.REG[7] = once_value_39;
         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_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:357 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ../lib/standard/kernel.nit:238 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ../lib/standard/kernel.nit:357 */
         REGB0 = REGB2;
       } else {
-        /* ./../lib/standard//kernel.nit:335 */
-        goto label39;
+        /* ../lib/standard/kernel.nit:355 */
+        goto label40;
       }
     }
-    label39: while(0);
+    label40: while(0);
   }
-  /* ./compiling//compiling_icode.nit:333 */
-  if (!once_value_40) {
+  /* compiling/compiling_icode.nit:337 */
+  if (!once_value_41) {
     fra.me.REG[2] = BOX_NativeString("val_t tmp;");
     REGB0 = TAG_Int(10);
     fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_40 = fra.me.REG[2];
-    register_static_object(&once_value_40);
-  } else fra.me.REG[2] = once_value_40;
+    once_value_41 = fra.me.REG[2];
+    register_static_object(&once_value_41);
+  } else fra.me.REG[2] = once_value_41;
   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 */
+  /* compiling/compiling_icode.nit:340 */
   fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___return_label(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:337 */
+  /* 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___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:344 */
   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 */
-  if (!once_value_41) {
+  /* compiling/compiling_icode.nit:346 */
+  if (!once_value_42) {
     fra.me.REG[3] = BOX_NativeString("stack_frame_head = fra.me.prev;");
     REGB0 = TAG_Int(31);
     fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_41 = fra.me.REG[3];
-    register_static_object(&once_value_41);
-  } else fra.me.REG[3] = once_value_41;
+    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_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:343 */
+  /* compiling/compiling_icode.nit:347 */
   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 */
+  /* compiling/compiling_icode.nit:348 */
   fra.me.REG[0] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:345 */
+  /* compiling/compiling_icode.nit:349 */
   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);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
@@ -2761,19 +2889,19 @@ 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:350 */
     fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    goto label42;
+    goto label43;
   } else {
-    /* ./compiling//compiling_icode.nit:348 */
+    /* compiling/compiling_icode.nit:352 */
     fra.me.REG[0] = NIT_NULL;
-    goto label42;
+    goto label43;
   }
-  label42: while(0);
+  label43: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-  void OC_compiling___compiling_icode___IRoutine___compile_inside_to_c_24(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+  void OC_compiling___compiling_icode___IRoutine___compile_inside_to_c_25(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[1];} fra;
     val_t REGB0;
     val_t REGB1;
@@ -2786,89 +2914,102 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
     fra.me.meth = LOCATE_compiling___compiling_icode___IRoutine___compile_inside_to_c;
     fra.me.has_broke = 0;
     fra.me.REG_size = 2;
+    fra.me.nitni_local_ref_head = NULL;
     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;
-    /* ./compiling//compiling_icode.nit:313 */
+    /* compiling/compiling_icode.nit:317 */
     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)) {
     } else {
       REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(false);
+        REGB1 = TAG_Bool(0);
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ../lib/standard/kernel.nit:230 */
         REGB1 = TAG_Bool((fra.me.REG[1])==(NIT_NULL));
-        /* ./compiling//compiling_icode.nit:313 */
+        /* compiling/compiling_icode.nit:317 */
         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:236 */
       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:235 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
-        REGB2 = TAG_Bool(false);
+        /* ../lib/standard/collection/array.nit:280 */
+        REGB2 = TAG_Bool(0);
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 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:724 */
       fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
-      /* ./../lib/standard//collection//array.nit:246 */
-      goto label25;
-      label25: while(0);
-      /* ./compiling//compiling_icode.nit:313 */
+      /* ../lib/standard/collection/array.nit:281 */
+      goto label26;
+      label26: while(0);
+      /* compiling/compiling_icode.nit:317 */
       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:318 */
     REGB0 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ../lib/standard/kernel.nit:238 */
     REGB0 = TAG_Int(UNTAG_Int(closctx->REG[4])+UNTAG_Int(REGB0));
-    /* ./compiling//compiling_icode.nit:314 */
+    /* compiling/compiling_icode.nit:318 */
     closctx->REG[4] = REGB0;
     stack_frame_head = fra.me.prev;
     return;
   }
+static const char LOCATE_compiling___compiling_icode___IRoutine___compile_to_c[] = "compiling_icode::IRoutine::compile_to_c";
 val_t compiling___compiling_icode___IRoutine___compile_to_c(val_t p0, val_t p1, val_t p2, val_t p3){
   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_compiling___compiling_icode;
-  fra.me.line = 352;
+  fra.me.line = 356;
   fra.me.meth = LOCATE_compiling___compiling_icode___IRoutine___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -2877,29 +3018,32 @@ 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 */
+  /* compiling/compiling_icode.nit:360 */
   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 */
+  /* compiling/compiling_icode.nit:361 */
   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);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
+static const char LOCATE_compiling___compiling_icode___ICode___compile_to_c[] = "compiling_icode::ICode::compile_to_c";
 void compiling___compiling_icode___ICode___compile_to_c(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_compiling___compiling_icode;
-  fra.me.line = 362;
+  fra.me.line = 366;
   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);
+  fra.me.nitni_local_ref_head = NULL;
+  /* compiling/compiling_icode.nit:366 */
+  nit_abort("Deferred method called", NULL, LOCATE_compiling___compiling_icode, 366);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___ICode___need_result[] = "compiling_icode::ICode::need_result";
 val_t compiling___compiling_icode___ICode___need_result(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -2907,21 +3051,22 @@ 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 = 369;
   fra.me.meth = LOCATE_compiling___compiling_icode___ICode___need_result;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:368 */
+  /* compiling/compiling_icode.nit:372 */
   fra.me.REG[0] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:369 */
+  /* compiling/compiling_icode.nit:373 */
   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);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
@@ -2932,7 +3077,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, 373);
     }
     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);
@@ -2940,18 +3085,18 @@ val_t compiling___compiling_icode___ICode___need_result(val_t p0){
     } else {
       REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(false);
+        REGB1 = TAG_Bool(0);
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ../lib/standard/kernel.nit:230 */
         REGB1 = TAG_Bool((fra.me.REG[0])==(NIT_NULL));
-        /* ./compiling//compiling_icode.nit:369 */
+        /* compiling/compiling_icode.nit:373 */
         REGB0 = REGB1;
       }
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   } else {
-    REGB1 = TAG_Bool(false);
+    REGB1 = TAG_Bool(0);
     REGB0 = REGB1;
   }
   goto label1;
@@ -2959,6 +3104,7 @@ val_t compiling___compiling_icode___ICode___need_result(val_t p0){
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_compiling___compiling_icode___ICode___store_result[] = "compiling_icode::ICode::store_result";
 void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
@@ -2969,10 +3115,11 @@ 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 = 376;
   fra.me.meth = LOCATE_compiling___compiling_icode___ICode___store_result;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -2981,15 +3128,15 @@ 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 */
+  /* compiling/compiling_icode.nit:379 */
   fra.me.REG[3] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:376 */
+  /* compiling/compiling_icode.nit:380 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
@@ -3000,7 +3147,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, 380);
     }
     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);
@@ -3008,28 +3155,28 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
     } else {
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(false);
+        REGB1 = TAG_Bool(0);
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ../lib/standard/kernel.nit:230 */
         REGB1 = TAG_Bool((fra.me.REG[4])==(NIT_NULL));
-        /* ./compiling//compiling_icode.nit:376 */
+        /* compiling/compiling_icode.nit:380 */
         REGB0 = REGB1;
       }
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   } else {
-    REGB1 = TAG_Bool(false);
+    REGB1 = TAG_Bool(0);
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:377 */
+    /* compiling/compiling_icode.nit:381 */
     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);
+        REGB1 = TAG_Bool(0);
         REGB0 = REGB1;
       } else {
         REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
@@ -3039,14 +3186,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, 381);
     }
-    /* ./compiling//compiling_icode.nit:378 */
+    /* compiling/compiling_icode.nit:382 */
     fra.me.REG[4] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./compiling//compiling_icode.nit:379 */
+    /* compiling/compiling_icode.nit:383 */
     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 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+    /* compiling/compiling_icode.nit:384 */
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString(" = ");
       REGB0 = TAG_Int(3);
@@ -3055,10 +3202,10 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
       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[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_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+    /* compiling/compiling_icode.nit:385 */
+    CALL_compiling_writer___Writer___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
+    /* compiling/compiling_icode.nit:386 */
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
@@ -3067,15 +3214,15 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
       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[4])(fra.me.REG[4], fra.me.REG[3]);
+    CALL_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:387 */
     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);
+        REGB1 = TAG_Bool(0);
         REGB0 = REGB1;
       } else {
         REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
@@ -3087,15 +3234,15 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
       REGB0 = CALL_icode___icode_base___ICode___is_pure(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     } else {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//compiling_icode.nit:386 */
+      /* compiling/compiling_icode.nit:390 */
       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]);
-      /* ./compiling//compiling_icode.nit:388 */
+      /* compiling/compiling_icode.nit:391 */
+      CALL_compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+      /* compiling/compiling_icode.nit:392 */
       if (!once_value_3) {
         fra.me.REG[2] = BOX_NativeString(";\n");
         REGB0 = TAG_Int(2);
@@ -3104,12 +3251,13 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
         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]);
+      CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
     }
   }
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___ICode___new_result[] = "compiling_icode::ICode::new_result";
 val_t compiling___compiling_icode___ICode___new_result(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -3119,20 +3267,21 @@ 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 = 396;
   fra.me.meth = LOCATE_compiling___compiling_icode___ICode___new_result;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:396 */
+  /* compiling/compiling_icode.nit:400 */
   REGB0 = CALL_compiling___compiling_icode___ICode___need_result(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
-    REGB0 = TAG_Bool(true);
+    REGB0 = TAG_Bool(1);
   } else {
     REGB1 = CALL_icode___icode_base___ICode___is_pure(fra.me.REG[0])(fra.me.REG[0]);
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
@@ -3140,19 +3289,19 @@ 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, 400);
   }
-  /* ./compiling//compiling_icode.nit:397 */
+  /* compiling/compiling_icode.nit:401 */
   fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:398 */
+  /* compiling/compiling_icode.nit:402 */
   fra.me.REG[0] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:399 */
+  /* compiling/compiling_icode.nit:403 */
   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);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
@@ -3163,7 +3312,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, 403);
     }
     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);
@@ -3171,25 +3320,25 @@ val_t compiling___compiling_icode___ICode___new_result(val_t p0, val_t p1){
     } else {
       REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(false);
+        REGB1 = TAG_Bool(0);
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ../lib/standard/kernel.nit:230 */
         REGB1 = TAG_Bool((fra.me.REG[3])==(NIT_NULL));
-        /* ./compiling//compiling_icode.nit:399 */
+        /* compiling/compiling_icode.nit:403 */
         REGB0 = REGB1;
       }
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   } else {
-    REGB1 = TAG_Bool(false);
+    REGB1 = TAG_Bool(0);
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:400 */
+    /* compiling/compiling_icode.nit:404 */
     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 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    /* compiling/compiling_icode.nit:405 */
     if (!once_value_1) {
       fra.me.REG[0] = BOX_NativeString(" = ");
       REGB0 = TAG_Int(3);
@@ -3198,11 +3347,11 @@ val_t compiling___compiling_icode___ICode___new_result(val_t p0, val_t p1){
       register_static_object(&once_value_1);
     } else fra.me.REG[0] = once_value_1;
     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]);
+    CALL_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 */
+  /* compiling/compiling_icode.nit:407 */
+  fra.me.REG[0] = CALL_compiling_writer___Writer___sub(fra.me.REG[2])(fra.me.REG[2]);
+  /* compiling/compiling_icode.nit:408 */
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
@@ -3211,13 +3360,14 @@ val_t compiling___compiling_icode___ICode___new_result(val_t p0, val_t p1){
     register_static_object(&once_value_2);
   } 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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  /* compiling/compiling_icode.nit:409 */
   goto label3;
   label3: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_compiling___compiling_icode___ISeq___compile_to_c[] = "compiling_icode::ISeq::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___ISeq___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -3225,31 +3375,32 @@ 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 = 414;
   fra.me.meth = LOCATE_compiling___compiling_icode___ISeq___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:412 */
+  /* compiling/compiling_icode.nit:416 */
   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:417 */
   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 */
+  /* compiling/compiling_icode.nit:418 */
   fra.me.REG[2] = CALL_icode___icode_base___ISeq___iescape_mark(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:415 */
+  /* compiling/compiling_icode.nit:419 */
   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);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
@@ -3261,10 +3412,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:420 */
   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:423 */
   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;
@@ -3279,16 +3430,18 @@ void compiling___compiling_icode___ISeq___compile_to_c(val_t p0, val_t p1){
     fra.me.meth = LOCATE_compiling___compiling_icode___ISeq___compile_to_c;
     fra.me.has_broke = 0;
     fra.me.REG_size = 1;
+    fra.me.nitni_local_ref_head = NULL;
     fra.me.REG[0] = NIT_NULL;
     fra.me.closure_ctx = closctx_param;
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./compiling//compiling_icode.nit:417 */
+    /* compiling/compiling_icode.nit:421 */
     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;
   }
+static const char LOCATE_compiling___compiling_icode___IIf___compile_to_c[] = "compiling_icode::IIf::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___IIf___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -3299,22 +3452,23 @@ 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 = 428;
   fra.me.meth = LOCATE_compiling___compiling_icode___IIf___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:426 */
+  /* compiling/compiling_icode.nit:430 */
   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 */
+  /* compiling/compiling_icode.nit:431 */
   fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:428 */
+  /* compiling/compiling_icode.nit:432 */
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("if (UNTAG_Bool(");
     REGB0 = TAG_Int(15);
@@ -3323,12 +3477,12 @@ void compiling___compiling_icode___IIf___compile_to_c(val_t p0, val_t p1){
     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[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:429 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:433 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:434 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString(")) {\n");
     REGB0 = TAG_Int(5);
@@ -3337,28 +3491,28 @@ void compiling___compiling_icode___IIf___compile_to_c(val_t p0, val_t p1){
     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[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:431 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:435 */
   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 */
+    /* compiling/compiling_icode.nit:436 */
     CALL_compiling___compiling_icode___I2CCompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./compiling//compiling_icode.nit:433 */
+    /* compiling/compiling_icode.nit:437 */
     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:438 */
     CALL_compiling___compiling_icode___I2CCompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
   }
-  /* ./compiling//compiling_icode.nit:436 */
+  /* compiling/compiling_icode.nit:440 */
   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:441 */
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("} else {");
       REGB0 = TAG_Int(8);
@@ -3368,15 +3522,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 */
+    /* compiling/compiling_icode.nit:442 */
     CALL_compiling___compiling_icode___I2CCompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./compiling//compiling_icode.nit:439 */
+    /* compiling/compiling_icode.nit:443 */
     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:444 */
     CALL_compiling___compiling_icode___I2CCompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
   }
-  /* ./compiling//compiling_icode.nit:442 */
+  /* compiling/compiling_icode.nit:446 */
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString("}");
     REGB0 = TAG_Int(1);
@@ -3389,6 +3543,7 @@ void compiling___compiling_icode___IIf___compile_to_c(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___ILoop___compile_to_c[] = "compiling_icode::ILoop::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___ILoop___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -3398,31 +3553,32 @@ 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 = 451;
   fra.me.meth = LOCATE_compiling___compiling_icode___ILoop___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:449 */
+  /* compiling/compiling_icode.nit:453 */
   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:454 */
   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 */
+  /* compiling/compiling_icode.nit:455 */
   fra.me.REG[2] = CALL_icode___icode_base___ISeq___iescape_mark(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:452 */
+  /* compiling/compiling_icode.nit:456 */
   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);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
@@ -3434,7 +3590,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:457 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("while(1) {");
     REGB0 = TAG_Int(10);
@@ -3444,14 +3600,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 */
+  /* compiling/compiling_icode.nit:458 */
   CALL_compiling___compiling_icode___I2CCompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:455 */
+  /* compiling/compiling_icode.nit:459 */
   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 */
+  /* compiling/compiling_icode.nit:462 */
   CALL_compiling___compiling_icode___I2CCompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:459 */
+  /* compiling/compiling_icode.nit:463 */
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("}");
     REGB0 = TAG_Int(1);
@@ -3461,7 +3617,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:464 */
   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;
@@ -3476,34 +3632,37 @@ void compiling___compiling_icode___ILoop___compile_to_c(val_t p0, val_t p1){
     fra.me.meth = LOCATE_compiling___compiling_icode___ILoop___compile_to_c;
     fra.me.has_broke = 0;
     fra.me.REG_size = 1;
+    fra.me.nitni_local_ref_head = NULL;
     fra.me.REG[0] = NIT_NULL;
     fra.me.closure_ctx = closctx_param;
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./compiling//compiling_icode.nit:456 */
+    /* compiling/compiling_icode.nit:460 */
     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;
   }
+static const char LOCATE_compiling___compiling_icode___IEscape___compile_to_c[] = "compiling_icode::IEscape::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___IEscape___compile_to_c(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_compiling___compiling_icode;
-  fra.me.line = 465;
+  fra.me.line = 469;
   fra.me.meth = LOCATE_compiling___compiling_icode___IEscape___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:467 */
+  /* compiling/compiling_icode.nit:471 */
   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:472 */
   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]);
@@ -3511,8 +3670,9 @@ void compiling___compiling_icode___IEscape___compile_to_c(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___IAbsCall___compile_to_c[] = "compiling_icode::IAbsCall::(compiling_icode::ICode::compile_to_c)";
 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 +3695,11 @@ 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 = 477;
   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.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -3548,350 +3709,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: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]);
-  /* ./compiling//compiling_icode.nit:480 */
-  fra.me.REG[4] = CALL_icode___icode_base___ICodeN___closure_defs(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:481 */
-  fra.me.REG[5] = NIT_NULL;
-  /* ./compiling//compiling_icode.nit:482 */
-  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  /* compiling/compiling_icode.nit:477 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* compiling/compiling_icode.nit:479 */
+  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:480 */
+  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:483 */
+  fra.me.REG[4] = CALL_compiling___compiling_icode___I2CCompilerVisitor___escaped_labels(fra.me.REG[1])(fra.me.REG[1]);
+  /* compiling/compiling_icode.nit:484 */
+  fra.me.REG[5] = CALL_icode___icode_base___ICodeN___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
+  /* compiling/compiling_icode.nit:485 */
+  fra.me.REG[6] = NIT_NULL;
+  /* compiling/compiling_icode.nit:486 */
+  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);
+      REGB1 = TAG_Bool(0);
       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:488 */
     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:489 */
       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:491 */
       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:495 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+    /* compiling/compiling_icode.nit:498 */
+    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:501 */
+    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, 501);
     }
-    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);
+  /* compiling/compiling_icode.nit:512 */
+  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:513 */
+  fra.me.REG[5] = fra.me.REG[3];
+  /* compiling/compiling_icode.nit:516 */
+  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);
+      REGB1 = TAG_Bool(0);
       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]);
+    /* compiling/compiling_icode.nit:517 */
+    fra.me.REG[7] = CALL_compiling___compiling_icode___I2CCompilerVisitor___escaped_labels(fra.me.REG[1])(fra.me.REG[1]);
+    /* compiling/compiling_icode.nit:518 */
+    CALL_compiling___compiling_icode___I2CCompilerVisitor___escaped_labels__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+    /* compiling/compiling_icode.nit:520 */
+    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]);
+      /* compiling/compiling_icode.nit:522 */
+      fra.me.REG[4] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
+      /* compiling/compiling_icode.nit:523 */
+      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:524 */
         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_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
+        /* compiling/compiling_icode.nit:525 */
         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]);
-        /* ./compiling//compiling_icode.nit:523 */
+        } else fra.me.REG[8] = once_value_6;
+        fra.me.REG[8] = fra.me.REG[8];
+        CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
+        /* compiling/compiling_icode.nit:526 */
+        CALL_compiling_writer___Writer___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+        /* compiling/compiling_icode.nit:527 */
         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];
-        /* ./compiling//compiling_icode.nit:525 */
+        } else fra.me.REG[8] = once_value_7;
+        fra.me.REG[8] = fra.me.REG[8];
+        CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
+        /* compiling/compiling_icode.nit:528 */
+        fra.me.REG[8] = NEW_Writer_compiling_writer___Writer___init();
+        fra.me.REG[5] = fra.me.REG[8];
+        /* compiling/compiling_icode.nit:529 */
         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, 529);
         }
-        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
+        CALL_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]);
-        /* ./compiling//compiling_icode.nit:529 */
+        /* compiling/compiling_icode.nit:531 */
+        fra.me.REG[5] = NIT_NULL;
+        /* compiling/compiling_icode.nit:532 */
+        CALL_compiling_writer___Writer___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+        /* compiling/compiling_icode.nit:533 */
         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_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:536 */
+      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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+      fra.me.REG[4] = CALL_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_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+      /* compiling/compiling_icode.nit:537 */
       CALL_compiling___compiling_icode___I2CCompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
-      /* ./compiling//compiling_icode.nit:535 */
+      /* compiling/compiling_icode.nit:539 */
       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]);
-      /* ./compiling//compiling_icode.nit:537 */
-      fra.me.REG[6] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[6])(fra.me.REG[6]);
-      /* ./compiling//compiling_icode.nit:538 */
-      REGB0 = TAG_Bool(false);
-      /* ./compiling//compiling_icode.nit:539 */
+      } 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:540 */
+      fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___local_labels(fra.me.REG[1])(fra.me.REG[1]);
+      /* compiling/compiling_icode.nit:541 */
+      fra.me.REG[7] = CALL_standard___collection___abstract_collection___MapRead___iterator(fra.me.REG[7])(fra.me.REG[7]);
+      /* compiling/compiling_icode.nit:542 */
+      REGB0 = TAG_Bool(0);
+      /* compiling/compiling_icode.nit:543 */
       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]);
+          /* compiling/compiling_icode.nit:544 */
+          fra.me.REG[4] = CALL_standard___collection___abstract_collection___MapIterator___key(fra.me.REG[7])(fra.me.REG[7]);
+          /* compiling/compiling_icode.nit:545 */
+          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:548 */
+            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_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, 548);
             }
-            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_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_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+            fra.me.REG[9] = CALL_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_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_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_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:551 */
             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, 551);
             }
-            /* ./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 */
-            REGB1 = TAG_Bool(true);
+            /* compiling/compiling_icode.nit:552 */
+            CALL_compiling___compiling_icode___I2CCompilerVisitor___register_escape_label(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+            /* compiling/compiling_icode.nit:553 */
+            REGB1 = TAG_Bool(1);
             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:555 */
+          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:543 */
           goto label17;
         }
       }
       label17: while(0);
-      /* ./compiling//compiling_icode.nit:554 */
+      /* compiling/compiling_icode.nit:558 */
       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:561 */
+        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_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, 561);
         }
-        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_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_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
       }
-      /* ./compiling//compiling_icode.nit:559 */
+      /* compiling/compiling_icode.nit:563 */
       CALL_compiling___compiling_icode___I2CCompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
-      /* ./compiling//compiling_icode.nit:560 */
+      /* compiling/compiling_icode.nit:564 */
       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:568 */
+  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);
+      REGB1 = TAG_Bool(0);
       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]);
+    /* compiling/compiling_icode.nit:569 */
+    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:570 */
+    CALL_compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -3909,18 +4073,19 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
       fra.me.meth = LOCATE_compiling___compiling_icode___IAbsCall___compile_to_c;
       fra.me.has_broke = 0;
       fra.me.REG_size = 1;
+      fra.me.nitni_local_ref_head = NULL;
       fra.me.REG[0] = NIT_NULL;
       fra.me.closure_ctx = closctx_param;
       fra.me.closure_funs = CREG;
       fra.me.REG[0] = p0;
       CREG[0] = clos_fun0;
-      /* ./compiling//compiling_icode.nit:498 */
+      /* compiling/compiling_icode.nit:502 */
       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);
+          REGB1 = TAG_Bool(0);
           REGB0 = REGB1;
         } else {
           REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
@@ -3929,16 +4094,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:503 */
         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, 503);
         }
         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:504 */
+        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:506 */
         if (!once_value_4) {
           fra.me.REG[0] = BOX_NativeString("NULL");
           REGB0 = TAG_Int(4);
@@ -3947,300 +4112,333 @@ 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;
     }
+static const char LOCATE_compiling___compiling_icode___IAbsCall___compile_call_to_c[] = "compiling_icode::IAbsCall::compile_call_to_c";
 val_t compiling___compiling_icode___IAbsCall___compile_call_to_c(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_compiling___compiling_icode;
-  fra.me.line = 570;
+  fra.me.line = 574;
   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);
+  fra.me.nitni_local_ref_head = NULL;
+  /* compiling/compiling_icode.nit:574 */
+  nit_abort("Deferred method called", NULL, LOCATE_compiling___compiling_icode, 574);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
+static const char LOCATE_compiling___compiling_icode___ICall___compile_call_to_c[] = "compiling_icode::ICall::(compiling_icode::IAbsCall::compile_call_to_c)";
 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 = 579;
   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.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_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 */
+  /* compiling/compiling_icode.nit:581 */
+  fra.me.REG[1] = NEW_Writer_compiling_writer___Writer___init();
+  /* compiling/compiling_icode.nit:585 */
+  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:587 */
   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:588 */
+  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:589 */
   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) {
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:590 */
+  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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:591 */
+  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:592 */
   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_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:593 */
   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:586 */
-  goto label6;
-  label6: while(0);
+  CALL_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:594 */
+  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_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:595 */
+  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];
 }
+static const char LOCATE_compiling___compiling_icode___ISuper___compile_call_to_c[] = "compiling_icode::ISuper::(compiling_icode::IAbsCall::compile_call_to_c)";
 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 = 600;
   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.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = 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:604 */
+  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_writer___Writer___init();
+    goto label1;
+  }
+  /* compiling/compiling_icode.nit:606 */
   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:607 */
+  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 */
+  /* compiling/compiling_icode.nit:608 */
+  fra.me.REG[3] = NEW_Writer_compiling_writer___Writer___init();
+  /* compiling/compiling_icode.nit:609 */
   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) {
+  CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:610 */
+  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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:611 */
+  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:612 */
   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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:613 */
   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_writer___Writer___add_all(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:614 */
+  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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:615 */
+  fra.me.REG[1] = fra.me.REG[3];
+  goto label1;
+  label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_compiling___compiling_icode___INew___compile_call_to_c[] = "compiling_icode::INew::(compiling_icode::IAbsCall::compile_call_to_c)";
 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 = 620;
   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.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_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 */
-  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:622 */
+  fra.me.REG[1] = NEW_Writer_compiling_writer___Writer___init();
+  /* compiling/compiling_icode.nit:626 */
+  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:628 */
   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_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* compiling/compiling_icode.nit:629 */
+  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_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* compiling/compiling_icode.nit:630 */
+  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_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* compiling/compiling_icode.nit:631 */
   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) {
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:632 */
+  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;
-  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) {
-    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:616 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:633 */
   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:617 */
-  goto label6;
-  label6: while(0);
+  CALL_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:634 */
+  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_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:635 */
+  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];
 }
+static const char LOCATE_compiling___compiling_icode___IAllocateInstance___compile_to_c[] = "compiling_icode::IAllocateInstance::(compiling_icode::ICode::compile_to_c)";
 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;
   val_t REGB0;
@@ -4249,21 +4447,22 @@ 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 = 640;
   fra.me.meth = LOCATE_compiling___compiling_icode___IAllocateInstance___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:624 */
+  /* compiling/compiling_icode.nit:642 */
   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:643 */
   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:644 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("NEW_");
     REGB0 = TAG_Int(4);
@@ -4272,13 +4471,13 @@ void compiling___compiling_icode___IAllocateInstance___compile_to_c(val_t p0, va
     register_static_object(&once_value_1);
   } 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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* compiling/compiling_icode.nit:645 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:646 */
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("()");
     REGB0 = TAG_Int(2);
@@ -4287,10 +4486,11 @@ void compiling___compiling_icode___IAllocateInstance___compile_to_c(val_t p0, va
     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]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___ICheckInstance___compile_to_c[] = "compiling_icode::ICheckInstance::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___ICheckInstance___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -4300,22 +4500,23 @@ 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 = 651;
   fra.me.meth = LOCATE_compiling___compiling_icode___ICheckInstance___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:635 */
+  /* compiling/compiling_icode.nit:653 */
   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:654 */
   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:655 */
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("CHECKNEW_");
     REGB0 = TAG_Int(9);
@@ -4324,13 +4525,13 @@ void compiling___compiling_icode___ICheckInstance___compile_to_c(val_t p0, val_t
     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[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:638 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:656 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:657 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
@@ -4339,12 +4540,12 @@ void compiling___compiling_icode___ICheckInstance___compile_to_c(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];
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:640 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:658 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:659 */
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
@@ -4353,10 +4554,11 @@ void compiling___compiling_icode___ICheckInstance___compile_to_c(val_t p0, val_t
     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[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___IInitAttributes___compile_to_c[] = "compiling_icode::IInitAttributes::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___IInitAttributes___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -4366,22 +4568,23 @@ 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 = 664;
   fra.me.meth = LOCATE_compiling___compiling_icode___IInitAttributes___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:648 */
+  /* compiling/compiling_icode.nit:666 */
   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:667 */
   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:668 */
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("INIT_ATTRIBUTES__");
     REGB0 = TAG_Int(17);
@@ -4390,13 +4593,13 @@ void compiling___compiling_icode___IInitAttributes___compile_to_c(val_t p0, val_
     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[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:651 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:669 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:670 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
@@ -4405,12 +4608,12 @@ void compiling___compiling_icode___IInitAttributes___compile_to_c(val_t p0, val_
     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[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:653 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:671 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:672 */
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(");\n");
     REGB0 = TAG_Int(3);
@@ -4419,10 +4622,11 @@ void compiling___compiling_icode___IInitAttributes___compile_to_c(val_t p0, val_
     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[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___IStaticCall___compile_call_to_c[] = "compiling_icode::IStaticCall::(compiling_icode::IAbsCall::compile_call_to_c)";
 val_t compiling___compiling_icode___IStaticCall___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;
   val_t REGB0;
@@ -4433,19 +4637,20 @@ 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 = 677;
   fra.me.meth = LOCATE_compiling___compiling_icode___IStaticCall___compile_call_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_icode.nit:661 */
+  /* compiling/compiling_icode.nit:679 */
   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:680 */
   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 +4664,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 */
-  fra.me.REG[1] = NEW_Writer_compiling___compiling_writer___Writer___init();
-  /* ./compiling//compiling_icode.nit:664 */
+  /* compiling/compiling_icode.nit:681 */
+  fra.me.REG[1] = NEW_Writer_compiling_writer___Writer___init();
+  /* compiling/compiling_icode.nit:682 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:683 */
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
@@ -4474,8 +4679,8 @@ val_t compiling___compiling_icode___IStaticCall___compile_call_to_c(val_t p0, va
     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:666 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:684 */
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
@@ -4484,8 +4689,8 @@ val_t compiling___compiling_icode___IStaticCall___compile_call_to_c(val_t p0, va
     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_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:667 */
+  CALL_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:685 */
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
@@ -4494,50 +4699,54 @@ val_t compiling___compiling_icode___IStaticCall___compile_call_to_c(val_t p0, va
     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:668 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:686 */
   goto label5;
   label5: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_compiling___compiling_icode___INative___compile_to_c[] = "compiling_icode::INative::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___INative___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 673;
+  fra.me.line = 691;
   fra.me.meth = LOCATE_compiling___compiling_icode___INative___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:675 */
+  /* compiling/compiling_icode.nit:693 */
   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:694 */
   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:695 */
     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:696 */
     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:697 */
       CALL_compiling___compiling_icode___INative___compile_extern_method_to_c(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
     }
   }
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___INative___compile_extern_method_to_c[] = "compiling_icode::INative::compile_extern_method_to_c";
 void compiling___compiling_icode___INative___compile_extern_method_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
@@ -4554,10 +4763,11 @@ 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 = 701;
   fra.me.meth = LOCATE_compiling___compiling_icode___INative___compile_extern_method_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -4567,7 +4777,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:703 */
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -4582,7 +4792,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 +4804,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:705 */
   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:706 */
   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, 706);
   }
   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:238 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-  /* ./compiling//compiling_icode.nit:688 */
+  /* compiling/compiling_icode.nit:706 */
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ../lib/standard/kernel.nit:230 */
     REGB2 = TAG_Bool((REGB0)==(REGB2));
-    /* ./compiling//compiling_icode.nit:688 */
+    /* compiling/compiling_icode.nit:706 */
     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, 706);
   }
-  /* ./compiling//compiling_icode.nit:690 */
+  /* compiling/compiling_icode.nit:708 */
   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:710 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* ./compiling//compiling_icode.nit:693 */
+  /* compiling/compiling_icode.nit:711 */
   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:236 */
   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:235 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
   } else {
-    /* ./../lib/standard//collection//array.nit:245 */
-    REGB0 = TAG_Bool(false);
+    /* ../lib/standard/collection/array.nit:280 */
+    REGB0 = TAG_Bool(0);
     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:724 */
   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:711 */
   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:712 */
   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, 712);
   }
   REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./../lib/standard//kernel.nit:335 */
+  /* ../lib/standard/kernel.nit:355 */
   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:235 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ../lib/standard/kernel.nit:355 */
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//compiling_icode.nit:694 */
+      /* compiling/compiling_icode.nit:712 */
       REGB0 = REGB1;
-      /* ./compiling//compiling_icode.nit:695 */
+      /* compiling/compiling_icode.nit:713 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:238 */
       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:236 */
       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:235 */
         REGB0 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB0));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
-        REGB4 = TAG_Bool(false);
+        /* ../lib/standard/collection/array.nit:280 */
+        REGB4 = TAG_Bool(0);
         REGB0 = REGB4;
       }
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 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:724 */
       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:713 */
       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:357 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:238 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ../lib/standard/kernel.nit:357 */
       REGB1 = REGB3;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ../lib/standard/kernel.nit:355 */
       goto label5;
     }
   }
   label5: while(0);
-  /* ./compiling//compiling_icode.nit:697 */
+  /* compiling/compiling_icode.nit:715 */
   REGB1 = TAG_Int(5);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_6) {
@@ -4777,17 +5012,18 @@ 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:717 */
   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:718 */
   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 */
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:719 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___INative___compile_intern_method_to_c[] = "compiling_icode::INative::compile_intern_method_to_c";
 void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
@@ -5117,6 +5353,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               static val_t once_value_433; /* Once value */
                static val_t once_value_434; /* Once value */
                static val_t once_value_435; /* Once value */
+               static val_t once_value_436; /* Once value */
                static val_t once_value_437; /* Once value */
                static val_t once_value_438; /* Once value */
                static val_t once_value_439; /* Once value */
@@ -5125,40 +5362,52 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                static val_t once_value_442; /* Once value */
                static val_t once_value_443; /* Once value */
                static val_t once_value_445; /* Once value */
+               static val_t once_value_446; /* Once value */
                static val_t once_value_447; /* Once value */
                static val_t once_value_448; /* Once value */
-               static val_t once_value_449; /* Once value */
                static val_t once_value_450; /* Once value */
+               static val_t once_value_451; /* Once value */
                static val_t once_value_452; /* Once value */
                static val_t once_value_453; /* Once value */
                static val_t once_value_454; /* Once value */
                static val_t once_value_455; /* Once value */
-               static val_t once_value_457; /* Once value */
+               static val_t once_value_456; /* Once value */
                static val_t once_value_458; /* Once value */
-               static val_t once_value_459; /* Once value */
                static val_t once_value_460; /* Once value */
+               static val_t once_value_461; /* Once value */
                static val_t once_value_462; /* Once value */
                static val_t once_value_463; /* Once value */
-               static val_t once_value_464; /* Once value */
                static val_t once_value_465; /* Once value */
+               static val_t once_value_466; /* Once value */
                static val_t once_value_467; /* Once value */
                static val_t once_value_468; /* Once value */
-               static val_t once_value_469; /* Once value */
                static val_t once_value_470; /* Once value */
+               static val_t once_value_471; /* Once value */
                static val_t once_value_472; /* Once value */
-      static val_t once_value_473; /* Once value */
-      static val_t once_value_474; /* Once value */
-    static val_t once_value_475; /* Once value */
-    static val_t once_value_476; /* Once value */
-    static val_t once_value_477; /* Once value */
-    static val_t once_value_478; /* Once value */
-    static val_t once_value_479; /* Once value */
+               static val_t once_value_473; /* Once value */
+               static val_t once_value_475; /* Once value */
+               static val_t once_value_476; /* Once value */
+               static val_t once_value_477; /* Once value */
+               static val_t once_value_478; /* Once value */
+               static val_t once_value_480; /* Once value */
+               static val_t once_value_481; /* Once value */
+               static val_t once_value_482; /* Once value */
+               static val_t once_value_483; /* Once value */
+               static val_t once_value_485; /* Once value */
+      static val_t once_value_486; /* Once value */
+      static val_t once_value_487; /* Once value */
+    static val_t once_value_488; /* Once value */
+    static val_t once_value_489; /* Once value */
+    static val_t once_value_490; /* Once value */
+    static val_t once_value_491; /* Once value */
+    static val_t once_value_492; /* 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 = 722;
   fra.me.meth = LOCATE_compiling___compiling_icode___INative___compile_intern_method_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -5169,46 +5418,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:724 */
   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:725 */
   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, 725);
   }
   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:238 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-  /* ./compiling//compiling_icode.nit:707 */
+  /* compiling/compiling_icode.nit:725 */
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ../lib/standard/kernel.nit:230 */
     REGB2 = TAG_Bool((REGB0)==(REGB2));
-    /* ./compiling//compiling_icode.nit:707 */
+    /* compiling/compiling_icode.nit:725 */
     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, 725);
   }
-  /* ./compiling//compiling_icode.nit:708 */
+  /* compiling/compiling_icode.nit:726 */
   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:727 */
   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:728 */
   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:729 */
   fra.me.REG[5] = NIT_NULL;
-  /* ./compiling//compiling_icode.nit:712 */
+  /* compiling/compiling_icode.nit:730 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[6] = BOX_NativeString("Int");
@@ -5218,7 +5467,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
       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[6] = CALL_standard___symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
+    fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
     once_value_1 = fra.me.REG[6];
     register_static_object(&once_value_1);
   } else fra.me.REG[6] = once_value_1;
@@ -5230,7 +5479,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:731 */
     if (!once_value_3) {
       if (!once_value_4) {
         fra.me.REG[6] = BOX_NativeString("object_id");
@@ -5240,7 +5489,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         register_static_object(&once_value_4);
       } 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]);
+      fra.me.REG[6] = CALL_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[6] = once_value_3;
@@ -5252,48 +5501,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:732 */
       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:236 */
       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:235 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
-        REGB0 = TAG_Bool(false);
+        /* ../lib/standard/collection/array.nit:280 */
+        REGB0 = TAG_Bool(0);
         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:724 */
       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:732 */
       fra.me.REG[5] = fra.me.REG[6];
     } else {
-      /* ./compiling//compiling_icode.nit:715 */
+      /* compiling/compiling_icode.nit:733 */
       if (!once_value_6) {
         if (!once_value_7) {
           fra.me.REG[6] = BOX_NativeString("unary -");
@@ -5303,7 +5562,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           register_static_object(&once_value_7);
         } else fra.me.REG[6] = once_value_7;
         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]);
+        fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
         once_value_6 = fra.me.REG[6];
         register_static_object(&once_value_6);
       } else fra.me.REG[6] = once_value_6;
@@ -5315,7 +5574,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:734 */
         REGB1 = TAG_Int(3);
         fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
         if (!once_value_8) {
@@ -5328,43 +5587,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:236 */
         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:235 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
-          REGB0 = TAG_Bool(false);
+          /* ../lib/standard/collection/array.nit:280 */
+          REGB0 = TAG_Bool(0);
           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:724 */
         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:734 */
         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 +5647,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:735 */
         if (!once_value_11) {
           if (!once_value_12) {
             fra.me.REG[6] = BOX_NativeString("output");
@@ -5388,7 +5657,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             register_static_object(&once_value_12);
           } else fra.me.REG[6] = once_value_12;
           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]);
+          fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
           once_value_11 = fra.me.REG[6];
           register_static_object(&once_value_11);
         } else fra.me.REG[6] = once_value_11;
@@ -5400,7 +5669,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:736 */
           REGB1 = TAG_Int(3);
           fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
           if (!once_value_13) {
@@ -5413,43 +5682,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:236 */
           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:235 */
             REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
           } else {
-            /* ./../lib/standard//collection//array.nit:245 */
-            REGB0 = TAG_Bool(false);
+            /* ../lib/standard/collection/array.nit:280 */
+            REGB0 = TAG_Bool(0);
             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:724 */
           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:736 */
           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 +5742,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:737 */
           if (!once_value_16) {
             if (!once_value_17) {
               fra.me.REG[6] = BOX_NativeString("ascii");
@@ -5473,7 +5752,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               register_static_object(&once_value_17);
             } else fra.me.REG[6] = once_value_17;
             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]);
+            fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
             once_value_16 = fra.me.REG[6];
             register_static_object(&once_value_16);
           } else fra.me.REG[6] = once_value_16;
@@ -5485,7 +5764,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:738 */
             REGB1 = TAG_Int(3);
             fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_18) {
@@ -5498,43 +5777,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:236 */
             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:235 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
             } else {
-              /* ./../lib/standard//collection//array.nit:245 */
-              REGB0 = TAG_Bool(false);
+              /* ../lib/standard/collection/array.nit:280 */
+              REGB0 = TAG_Bool(0);
               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:724 */
             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:738 */
             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 +5837,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:739 */
             if (!once_value_21) {
               if (!once_value_22) {
                fra.me.REG[6] = BOX_NativeString("succ");
@@ -5558,7 +5847,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_22);
               } else fra.me.REG[6] = once_value_22;
               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]);
+              fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
               once_value_21 = fra.me.REG[6];
               register_static_object(&once_value_21);
             } else fra.me.REG[6] = once_value_21;
@@ -5570,7 +5859,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:740 */
               REGB1 = TAG_Int(3);
               fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
               if (!once_value_23) {
@@ -5583,43 +5872,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:236 */
               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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
               } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
               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:740 */
               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 +5932,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:741 */
               if (!once_value_26) {
                if (!once_value_27) {
                fra.me.REG[6] = BOX_NativeString("prec");
@@ -5643,7 +5942,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_27);
                } else fra.me.REG[6] = once_value_27;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_26 = fra.me.REG[6];
                register_static_object(&once_value_26);
               } else fra.me.REG[6] = once_value_26;
@@ -5655,7 +5954,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:742 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_28) {
@@ -5668,43 +5967,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:742 */
                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 +6027,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:743 */
                if (!once_value_31) {
                if (!once_value_32) {
                fra.me.REG[6] = BOX_NativeString("to_f");
@@ -5728,7 +6037,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_32);
                } else fra.me.REG[6] = once_value_32;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_31 = fra.me.REG[6];
                register_static_object(&once_value_31);
                } else fra.me.REG[6] = once_value_31;
@@ -5740,7 +6049,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:744 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_33) {
@@ -5753,43 +6062,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:744 */
                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 +6122,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:745 */
                if (!once_value_36) {
                if (!once_value_37) {
                fra.me.REG[6] = BOX_NativeString("+");
@@ -5813,7 +6132,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_37);
                } else fra.me.REG[6] = once_value_37;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_36 = fra.me.REG[6];
                register_static_object(&once_value_36);
                } else fra.me.REG[6] = once_value_36;
@@ -5825,7 +6144,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:746 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_38) {
@@ -5838,43 +6157,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:746 */
                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 +6215,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:746 */
                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 +6275,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:747 */
                if (!once_value_43) {
                if (!once_value_44) {
                fra.me.REG[6] = BOX_NativeString("-");
@@ -5946,7 +6285,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_44);
                } else fra.me.REG[6] = once_value_44;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_43 = fra.me.REG[6];
                register_static_object(&once_value_43);
                } else fra.me.REG[6] = once_value_43;
@@ -5958,7 +6297,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:748 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_45) {
@@ -5971,43 +6310,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:748 */
                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 +6368,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:748 */
                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 +6428,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:749 */
                if (!once_value_50) {
                if (!once_value_51) {
                fra.me.REG[6] = BOX_NativeString("*");
@@ -6079,7 +6438,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_51);
                } else fra.me.REG[6] = once_value_51;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_50 = fra.me.REG[6];
                register_static_object(&once_value_50);
                } else fra.me.REG[6] = once_value_50;
@@ -6091,7 +6450,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:750 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_52) {
@@ -6104,43 +6463,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:236 */
                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 */
-               REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
+               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+               if (UNTAG_Bool(REGB0)) {
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+               }
+               /* ../lib/standard/kernel.nit:235 */
+               REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
+               } else {
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:750 */
                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 +6521,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:750 */
                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 +6581,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:751 */
                if (!once_value_57) {
                if (!once_value_58) {
                fra.me.REG[6] = BOX_NativeString("/");
@@ -6212,7 +6591,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_58);
                } else fra.me.REG[6] = once_value_58;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_57 = fra.me.REG[6];
                register_static_object(&once_value_57);
                } else fra.me.REG[6] = once_value_57;
@@ -6224,7 +6603,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:752 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_59) {
@@ -6237,43 +6616,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:752 */
                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 +6674,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:752 */
                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 +6734,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:753 */
                if (!once_value_64) {
                if (!once_value_65) {
                fra.me.REG[6] = BOX_NativeString("%");
@@ -6345,7 +6744,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_65);
                } else fra.me.REG[6] = once_value_65;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_64 = fra.me.REG[6];
                register_static_object(&once_value_64);
                } else fra.me.REG[6] = once_value_64;
@@ -6357,7 +6756,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:754 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_66) {
@@ -6370,43 +6769,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:754 */
                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 +6827,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:754 */
                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 +6887,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:755 */
                if (!once_value_71) {
                if (!once_value_72) {
                fra.me.REG[6] = BOX_NativeString("<");
@@ -6478,7 +6897,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_72);
                } else fra.me.REG[6] = once_value_72;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_71 = fra.me.REG[6];
                register_static_object(&once_value_71);
                } else fra.me.REG[6] = once_value_71;
@@ -6490,7 +6909,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:756 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_73) {
@@ -6503,43 +6922,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:756 */
                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 +6980,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:756 */
                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 +7040,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:757 */
                if (!once_value_78) {
                if (!once_value_79) {
                fra.me.REG[6] = BOX_NativeString(">");
@@ -6611,7 +7050,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_79);
                } else fra.me.REG[6] = once_value_79;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_78 = fra.me.REG[6];
                register_static_object(&once_value_78);
                } else fra.me.REG[6] = once_value_78;
@@ -6623,7 +7062,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:758 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_80) {
@@ -6636,43 +7075,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:758 */
                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 +7133,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:758 */
                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 +7193,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:759 */
                if (!once_value_85) {
                if (!once_value_86) {
                fra.me.REG[6] = BOX_NativeString("<=");
@@ -6744,7 +7203,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_86);
                } else fra.me.REG[6] = once_value_86;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_85 = fra.me.REG[6];
                register_static_object(&once_value_85);
                } else fra.me.REG[6] = once_value_85;
@@ -6756,7 +7215,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:760 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_87) {
@@ -6769,43 +7228,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:760 */
                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 +7286,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:760 */
                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 +7346,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:761 */
                if (!once_value_92) {
                if (!once_value_93) {
                fra.me.REG[6] = BOX_NativeString(">=");
@@ -6877,7 +7356,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_93);
                } else fra.me.REG[6] = once_value_93;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_92 = fra.me.REG[6];
                register_static_object(&once_value_92);
                } else fra.me.REG[6] = once_value_92;
@@ -6889,7 +7368,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:762 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_94) {
@@ -6902,43 +7381,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:762 */
                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 +7439,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:762 */
                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 +7499,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:763 */
                if (!once_value_99) {
                if (!once_value_100) {
                fra.me.REG[6] = BOX_NativeString("lshift");
@@ -7010,7 +7509,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_100);
                } else fra.me.REG[6] = once_value_100;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_99 = fra.me.REG[6];
                register_static_object(&once_value_99);
                } else fra.me.REG[6] = once_value_99;
@@ -7022,7 +7521,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:764 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_101) {
@@ -7035,43 +7534,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:764 */
                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 +7592,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:764 */
                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 +7652,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:765 */
                if (!once_value_106) {
                if (!once_value_107) {
                fra.me.REG[6] = BOX_NativeString("rshift");
@@ -7143,7 +7662,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_107);
                } else fra.me.REG[6] = once_value_107;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_106 = fra.me.REG[6];
                register_static_object(&once_value_106);
                } else fra.me.REG[6] = once_value_106;
@@ -7155,7 +7674,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:766 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_108) {
@@ -7168,43 +7687,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:766 */
                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 +7745,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:766 */
                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 +7805,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:767 */
                if (!once_value_113) {
                if (!once_value_114) {
                fra.me.REG[6] = BOX_NativeString("==");
@@ -7276,7 +7815,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_114);
                } else fra.me.REG[6] = once_value_114;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_113 = fra.me.REG[6];
                register_static_object(&once_value_113);
                } else fra.me.REG[6] = once_value_113;
@@ -7288,7 +7827,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:768 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_115) {
@@ -7301,43 +7840,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:768 */
                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 +7898,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:768 */
                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 +7958,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:769 */
                if (!once_value_120) {
                if (!once_value_121) {
                fra.me.REG[6] = BOX_NativeString("!=");
@@ -7409,7 +7968,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_121);
                } else fra.me.REG[6] = once_value_121;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_120 = fra.me.REG[6];
                register_static_object(&once_value_120);
                } else fra.me.REG[6] = once_value_120;
@@ -7421,7 +7980,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:770 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_122) {
@@ -7434,43 +7993,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:770 */
                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 +8051,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:770 */
                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 +8131,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
       }
     }
   } else {
-    /* ./compiling//compiling_icode.nit:754 */
+    /* compiling/compiling_icode.nit:772 */
     if (!once_value_127) {
       if (!once_value_128) {
         fra.me.REG[6] = BOX_NativeString("Float");
@@ -7562,7 +8141,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         register_static_object(&once_value_128);
       } else fra.me.REG[6] = once_value_128;
       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]);
+      fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
       once_value_127 = fra.me.REG[6];
       register_static_object(&once_value_127);
     } else fra.me.REG[6] = once_value_127;
@@ -7574,7 +8153,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:773 */
       if (!once_value_129) {
         if (!once_value_130) {
           fra.me.REG[6] = BOX_NativeString("object_id");
@@ -7584,7 +8163,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           register_static_object(&once_value_130);
         } else fra.me.REG[6] = once_value_130;
         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]);
+        fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
         once_value_129 = fra.me.REG[6];
         register_static_object(&once_value_129);
       } else fra.me.REG[6] = once_value_129;
@@ -7596,7 +8175,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:774 */
         REGB1 = TAG_Int(3);
         fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
         if (!once_value_131) {
@@ -7609,43 +8188,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:236 */
         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:235 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
-          REGB0 = TAG_Bool(false);
+          /* ../lib/standard/collection/array.nit:280 */
+          REGB0 = TAG_Bool(0);
           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:724 */
         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:774 */
         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 +8248,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:775 */
         if (!once_value_134) {
           if (!once_value_135) {
             fra.me.REG[6] = BOX_NativeString("unary -");
@@ -7669,7 +8258,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             register_static_object(&once_value_135);
           } else fra.me.REG[6] = once_value_135;
           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]);
+          fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
           once_value_134 = fra.me.REG[6];
           register_static_object(&once_value_134);
         } else fra.me.REG[6] = once_value_134;
@@ -7681,7 +8270,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:776 */
           REGB1 = TAG_Int(3);
           fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
           if (!once_value_136) {
@@ -7694,43 +8283,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:236 */
           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:235 */
             REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
           } else {
-            /* ./../lib/standard//collection//array.nit:245 */
-            REGB0 = TAG_Bool(false);
+            /* ../lib/standard/collection/array.nit:280 */
+            REGB0 = TAG_Bool(0);
             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:724 */
           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:776 */
           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 +8343,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:777 */
           if (!once_value_139) {
             if (!once_value_140) {
               fra.me.REG[6] = BOX_NativeString("output");
@@ -7754,7 +8353,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               register_static_object(&once_value_140);
             } else fra.me.REG[6] = once_value_140;
             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]);
+            fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
             once_value_139 = fra.me.REG[6];
             register_static_object(&once_value_139);
           } else fra.me.REG[6] = once_value_139;
@@ -7766,7 +8365,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:778 */
             REGB1 = TAG_Int(3);
             fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_141) {
@@ -7779,43 +8378,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:236 */
             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:235 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
             } else {
-              /* ./../lib/standard//collection//array.nit:245 */
-              REGB0 = TAG_Bool(false);
+              /* ../lib/standard/collection/array.nit:280 */
+              REGB0 = TAG_Bool(0);
               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:724 */
             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:778 */
             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 +8438,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:779 */
             if (!once_value_144) {
               if (!once_value_145) {
                fra.me.REG[6] = BOX_NativeString("to_i");
@@ -7839,7 +8448,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_145);
               } else fra.me.REG[6] = once_value_145;
               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]);
+              fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
               once_value_144 = fra.me.REG[6];
               register_static_object(&once_value_144);
             } else fra.me.REG[6] = once_value_144;
@@ -7851,7 +8460,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:780 */
               REGB1 = TAG_Int(3);
               fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
               if (!once_value_146) {
@@ -7864,43 +8473,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:236 */
               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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
               } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
               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:780 */
               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 +8533,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:781 */
               if (!once_value_149) {
                if (!once_value_150) {
                fra.me.REG[6] = BOX_NativeString("+");
@@ -7924,7 +8543,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_150);
                } else fra.me.REG[6] = once_value_150;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_149 = fra.me.REG[6];
                register_static_object(&once_value_149);
               } else fra.me.REG[6] = once_value_149;
@@ -7936,7 +8555,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:782 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_151) {
@@ -7949,43 +8568,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:782 */
                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 +8626,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:782 */
                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 +8686,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:783 */
                if (!once_value_156) {
                if (!once_value_157) {
                fra.me.REG[6] = BOX_NativeString("-");
@@ -8057,7 +8696,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_157);
                } else fra.me.REG[6] = once_value_157;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_156 = fra.me.REG[6];
                register_static_object(&once_value_156);
                } else fra.me.REG[6] = once_value_156;
@@ -8069,7 +8708,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:784 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_158) {
@@ -8082,43 +8721,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:784 */
                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 +8779,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:784 */
                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 +8839,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:785 */
                if (!once_value_163) {
                if (!once_value_164) {
                fra.me.REG[6] = BOX_NativeString("*");
@@ -8190,7 +8849,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_164);
                } else fra.me.REG[6] = once_value_164;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_163 = fra.me.REG[6];
                register_static_object(&once_value_163);
                } else fra.me.REG[6] = once_value_163;
@@ -8202,7 +8861,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:786 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_165) {
@@ -8215,43 +8874,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:786 */
                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 +8932,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:786 */
                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 +8992,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:787 */
                if (!once_value_170) {
                if (!once_value_171) {
                fra.me.REG[6] = BOX_NativeString("/");
@@ -8323,7 +9002,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_171);
                } else fra.me.REG[6] = once_value_171;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_170 = fra.me.REG[6];
                register_static_object(&once_value_170);
                } else fra.me.REG[6] = once_value_170;
@@ -8335,7 +9014,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:788 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_172) {
@@ -8348,43 +9027,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:788 */
                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 +9085,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:788 */
                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 +9145,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:789 */
                if (!once_value_177) {
                if (!once_value_178) {
                fra.me.REG[6] = BOX_NativeString("<");
@@ -8456,7 +9155,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_178);
                } else fra.me.REG[6] = once_value_178;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_177 = fra.me.REG[6];
                register_static_object(&once_value_177);
                } else fra.me.REG[6] = once_value_177;
@@ -8468,7 +9167,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:790 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_179) {
@@ -8481,43 +9180,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:790 */
                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 +9238,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:790 */
                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 +9298,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:791 */
                if (!once_value_184) {
                if (!once_value_185) {
                fra.me.REG[6] = BOX_NativeString(">");
@@ -8589,7 +9308,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_185);
                } else fra.me.REG[6] = once_value_185;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_184 = fra.me.REG[6];
                register_static_object(&once_value_184);
                } else fra.me.REG[6] = once_value_184;
@@ -8601,7 +9320,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:792 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_186) {
@@ -8614,43 +9333,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:792 */
                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 +9391,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:792 */
                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 +9451,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:793 */
                if (!once_value_191) {
                if (!once_value_192) {
                fra.me.REG[6] = BOX_NativeString("<=");
@@ -8722,7 +9461,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_192);
                } else fra.me.REG[6] = once_value_192;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_191 = fra.me.REG[6];
                register_static_object(&once_value_191);
                } else fra.me.REG[6] = once_value_191;
@@ -8734,7 +9473,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:794 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_193) {
@@ -8747,43 +9486,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:794 */
                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 +9544,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:794 */
                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 +9604,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:795 */
                if (!once_value_198) {
                if (!once_value_199) {
                fra.me.REG[6] = BOX_NativeString(">=");
@@ -8855,7 +9614,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_199);
                } else fra.me.REG[6] = once_value_199;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_198 = fra.me.REG[6];
                register_static_object(&once_value_198);
                } else fra.me.REG[6] = once_value_198;
@@ -8867,7 +9626,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:796 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_200) {
@@ -8880,43 +9639,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:796 */
                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 +9697,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:796 */
                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 +9769,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         }
       }
     } else {
-      /* ./compiling//compiling_icode.nit:780 */
+      /* compiling/compiling_icode.nit:798 */
       if (!once_value_205) {
         if (!once_value_206) {
           fra.me.REG[6] = BOX_NativeString("Char");
@@ -9000,7 +9779,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           register_static_object(&once_value_206);
         } else fra.me.REG[6] = once_value_206;
         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]);
+        fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
         once_value_205 = fra.me.REG[6];
         register_static_object(&once_value_205);
       } else fra.me.REG[6] = once_value_205;
@@ -9012,7 +9791,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:799 */
         if (!once_value_207) {
           if (!once_value_208) {
             fra.me.REG[6] = BOX_NativeString("object_id");
@@ -9022,7 +9801,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             register_static_object(&once_value_208);
           } else fra.me.REG[6] = once_value_208;
           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]);
+          fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
           once_value_207 = fra.me.REG[6];
           register_static_object(&once_value_207);
         } else fra.me.REG[6] = once_value_207;
@@ -9034,7 +9813,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:800 */
           REGB1 = TAG_Int(3);
           fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
           if (!once_value_209) {
@@ -9047,43 +9826,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:236 */
           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:235 */
             REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
           } else {
-            /* ./../lib/standard//collection//array.nit:245 */
-            REGB0 = TAG_Bool(false);
+            /* ../lib/standard/collection/array.nit:280 */
+            REGB0 = TAG_Bool(0);
             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:724 */
           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:800 */
           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 +9886,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:801 */
           if (!once_value_212) {
             if (!once_value_213) {
               fra.me.REG[6] = BOX_NativeString("unary -");
@@ -9107,7 +9896,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               register_static_object(&once_value_213);
             } else fra.me.REG[6] = once_value_213;
             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]);
+            fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
             once_value_212 = fra.me.REG[6];
             register_static_object(&once_value_212);
           } else fra.me.REG[6] = once_value_212;
@@ -9119,7 +9908,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:802 */
             REGB1 = TAG_Int(3);
             fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_214) {
@@ -9132,43 +9921,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:236 */
             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:235 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
             } else {
-              /* ./../lib/standard//collection//array.nit:245 */
-              REGB0 = TAG_Bool(false);
+              /* ../lib/standard/collection/array.nit:280 */
+              REGB0 = TAG_Bool(0);
               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:724 */
             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:802 */
             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 +9981,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:803 */
             if (!once_value_217) {
               if (!once_value_218) {
                fra.me.REG[6] = BOX_NativeString("output");
@@ -9192,7 +9991,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_218);
               } else fra.me.REG[6] = once_value_218;
               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]);
+              fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
               once_value_217 = fra.me.REG[6];
               register_static_object(&once_value_217);
             } else fra.me.REG[6] = once_value_217;
@@ -9204,7 +10003,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:804 */
               REGB1 = TAG_Int(3);
               fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
               if (!once_value_219) {
@@ -9217,43 +10016,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:236 */
               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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
               } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
               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:804 */
               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 +10076,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:805 */
               if (!once_value_222) {
                if (!once_value_223) {
                fra.me.REG[6] = BOX_NativeString("ascii");
@@ -9277,7 +10086,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_223);
                } else fra.me.REG[6] = once_value_223;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_222 = fra.me.REG[6];
                register_static_object(&once_value_222);
               } else fra.me.REG[6] = once_value_222;
@@ -9289,7 +10098,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:806 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_224) {
@@ -9302,43 +10111,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:806 */
                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 +10171,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:807 */
                if (!once_value_227) {
                if (!once_value_228) {
                fra.me.REG[6] = BOX_NativeString("succ");
@@ -9362,7 +10181,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_228);
                } else fra.me.REG[6] = once_value_228;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_227 = fra.me.REG[6];
                register_static_object(&once_value_227);
                } else fra.me.REG[6] = once_value_227;
@@ -9374,7 +10193,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:808 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_229) {
@@ -9387,43 +10206,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:808 */
                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 +10266,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:809 */
                if (!once_value_232) {
                if (!once_value_233) {
                fra.me.REG[6] = BOX_NativeString("prec");
@@ -9447,7 +10276,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_233);
                } else fra.me.REG[6] = once_value_233;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_232 = fra.me.REG[6];
                register_static_object(&once_value_232);
                } else fra.me.REG[6] = once_value_232;
@@ -9459,7 +10288,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:810 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_234) {
@@ -9472,43 +10301,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:810 */
                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 +10361,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:811 */
                if (!once_value_237) {
                if (!once_value_238) {
                fra.me.REG[6] = BOX_NativeString("to_i");
@@ -9532,7 +10371,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_238);
                } else fra.me.REG[6] = once_value_238;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_237 = fra.me.REG[6];
                register_static_object(&once_value_237);
                } else fra.me.REG[6] = once_value_237;
@@ -9544,7 +10383,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:812 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_239) {
@@ -9557,43 +10396,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:812 */
                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 +10456,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:813 */
                if (!once_value_242) {
                if (!once_value_243) {
                fra.me.REG[6] = BOX_NativeString("+");
@@ -9617,7 +10466,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_243);
                } else fra.me.REG[6] = once_value_243;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_242 = fra.me.REG[6];
                register_static_object(&once_value_242);
                } else fra.me.REG[6] = once_value_242;
@@ -9629,7 +10478,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:814 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_244) {
@@ -9642,43 +10491,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:814 */
                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 +10549,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:814 */
                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 +10609,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:815 */
                if (!once_value_249) {
                if (!once_value_250) {
                fra.me.REG[6] = BOX_NativeString("-");
@@ -9750,7 +10619,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_250);
                } else fra.me.REG[6] = once_value_250;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_249 = fra.me.REG[6];
                register_static_object(&once_value_249);
                } else fra.me.REG[6] = once_value_249;
@@ -9762,7 +10631,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:816 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_251) {
@@ -9775,43 +10644,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:816 */
                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 +10702,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:816 */
                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 +10762,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:817 */
                if (!once_value_256) {
                if (!once_value_257) {
                fra.me.REG[6] = BOX_NativeString("*");
@@ -9883,7 +10772,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_257);
                } else fra.me.REG[6] = once_value_257;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_256 = fra.me.REG[6];
                register_static_object(&once_value_256);
                } else fra.me.REG[6] = once_value_256;
@@ -9895,7 +10784,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:818 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_258) {
@@ -9908,43 +10797,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:818 */
                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 +10855,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:818 */
                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 +10915,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:819 */
                if (!once_value_263) {
                if (!once_value_264) {
                fra.me.REG[6] = BOX_NativeString("/");
@@ -10016,7 +10925,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_264);
                } else fra.me.REG[6] = once_value_264;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_263 = fra.me.REG[6];
                register_static_object(&once_value_263);
                } else fra.me.REG[6] = once_value_263;
@@ -10028,7 +10937,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:820 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_265) {
@@ -10041,43 +10950,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:820 */
                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 +11008,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:820 */
                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 +11068,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:821 */
                if (!once_value_270) {
                if (!once_value_271) {
                fra.me.REG[6] = BOX_NativeString("%");
@@ -10149,7 +11078,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_271);
                } else fra.me.REG[6] = once_value_271;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_270 = fra.me.REG[6];
                register_static_object(&once_value_270);
                } else fra.me.REG[6] = once_value_270;
@@ -10161,7 +11090,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:822 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_272) {
@@ -10174,43 +11103,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:822 */
                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 +11161,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:822 */
                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 +11221,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:823 */
                if (!once_value_277) {
                if (!once_value_278) {
                fra.me.REG[6] = BOX_NativeString("<");
@@ -10282,7 +11231,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_278);
                } else fra.me.REG[6] = once_value_278;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_277 = fra.me.REG[6];
                register_static_object(&once_value_277);
                } else fra.me.REG[6] = once_value_277;
@@ -10294,7 +11243,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:824 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_279) {
@@ -10307,43 +11256,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:824 */
                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 +11314,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:824 */
                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 +11374,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:825 */
                if (!once_value_284) {
                if (!once_value_285) {
                fra.me.REG[6] = BOX_NativeString(">");
@@ -10415,7 +11384,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_285);
                } else fra.me.REG[6] = once_value_285;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_284 = fra.me.REG[6];
                register_static_object(&once_value_284);
                } else fra.me.REG[6] = once_value_284;
@@ -10427,7 +11396,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:826 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_286) {
@@ -10440,43 +11409,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:826 */
                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 +11467,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:826 */
                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 +11527,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:827 */
                if (!once_value_291) {
                if (!once_value_292) {
                fra.me.REG[6] = BOX_NativeString("<=");
@@ -10548,7 +11537,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_292);
                } else fra.me.REG[6] = once_value_292;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_291 = fra.me.REG[6];
                register_static_object(&once_value_291);
                } else fra.me.REG[6] = once_value_291;
@@ -10560,7 +11549,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:828 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_293) {
@@ -10573,43 +11562,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 */
-               REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+               }
+               /* ../lib/standard/kernel.nit:236 */
+               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[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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:828 */
                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 +11620,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:828 */
                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 +11680,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:829 */
                if (!once_value_298) {
                if (!once_value_299) {
                fra.me.REG[6] = BOX_NativeString(">=");
@@ -10681,7 +11690,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_299);
                } else fra.me.REG[6] = once_value_299;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_298 = fra.me.REG[6];
                register_static_object(&once_value_298);
                } else fra.me.REG[6] = once_value_298;
@@ -10693,7 +11702,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:830 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_300) {
@@ -10706,43 +11715,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:830 */
                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 +11773,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:830 */
                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 +11833,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:831 */
                if (!once_value_305) {
                if (!once_value_306) {
                fra.me.REG[6] = BOX_NativeString("==");
@@ -10814,7 +11843,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_306);
                } else fra.me.REG[6] = once_value_306;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_305 = fra.me.REG[6];
                register_static_object(&once_value_305);
                } else fra.me.REG[6] = once_value_305;
@@ -10826,7 +11855,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:832 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_307) {
@@ -10839,43 +11868,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:832 */
                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 +11926,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:832 */
                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 +11986,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:833 */
                if (!once_value_312) {
                if (!once_value_313) {
                fra.me.REG[6] = BOX_NativeString("!=");
@@ -10947,7 +11996,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_313);
                } else fra.me.REG[6] = once_value_313;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_312 = fra.me.REG[6];
                register_static_object(&once_value_312);
                } else fra.me.REG[6] = once_value_312;
@@ -10959,7 +12008,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:834 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_314) {
@@ -10972,43 +12021,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:834 */
                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 +12079,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:834 */
                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 +12157,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           }
         }
       } else {
-        /* ./compiling//compiling_icode.nit:818 */
+        /* compiling/compiling_icode.nit:836 */
         if (!once_value_319) {
           if (!once_value_320) {
             fra.me.REG[6] = BOX_NativeString("Bool");
@@ -11098,7 +12167,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             register_static_object(&once_value_320);
           } else fra.me.REG[6] = once_value_320;
           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]);
+          fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
           once_value_319 = fra.me.REG[6];
           register_static_object(&once_value_319);
         } else fra.me.REG[6] = once_value_319;
@@ -11110,7 +12179,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:837 */
           if (!once_value_321) {
             if (!once_value_322) {
               fra.me.REG[6] = BOX_NativeString("object_id");
@@ -11120,7 +12189,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               register_static_object(&once_value_322);
             } else fra.me.REG[6] = once_value_322;
             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]);
+            fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
             once_value_321 = fra.me.REG[6];
             register_static_object(&once_value_321);
           } else fra.me.REG[6] = once_value_321;
@@ -11132,7 +12201,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:838 */
             REGB1 = TAG_Int(3);
             fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_323) {
@@ -11145,43 +12214,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:236 */
             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:235 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
             } else {
-              /* ./../lib/standard//collection//array.nit:245 */
-              REGB0 = TAG_Bool(false);
+              /* ../lib/standard/collection/array.nit:280 */
+              REGB0 = TAG_Bool(0);
               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:724 */
             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:838 */
             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 +12274,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:839 */
             if (!once_value_326) {
               if (!once_value_327) {
                fra.me.REG[6] = BOX_NativeString("unary -");
@@ -11205,7 +12284,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_327);
               } else fra.me.REG[6] = once_value_327;
               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]);
+              fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
               once_value_326 = fra.me.REG[6];
               register_static_object(&once_value_326);
             } else fra.me.REG[6] = once_value_326;
@@ -11217,7 +12296,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:840 */
               REGB1 = TAG_Int(3);
               fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
               if (!once_value_328) {
@@ -11230,43 +12309,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:236 */
               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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
               } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
               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:840 */
               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 +12369,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:841 */
               if (!once_value_331) {
                if (!once_value_332) {
                fra.me.REG[6] = BOX_NativeString("output");
@@ -11290,7 +12379,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_332);
                } else fra.me.REG[6] = once_value_332;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_331 = fra.me.REG[6];
                register_static_object(&once_value_331);
               } else fra.me.REG[6] = once_value_331;
@@ -11302,7 +12391,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:842 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_333) {
@@ -11315,43 +12404,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:842 */
                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 +12464,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:843 */
                if (!once_value_336) {
                if (!once_value_337) {
                fra.me.REG[6] = BOX_NativeString("ascii");
@@ -11375,7 +12474,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_337);
                } else fra.me.REG[6] = once_value_337;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_336 = fra.me.REG[6];
                register_static_object(&once_value_336);
                } else fra.me.REG[6] = once_value_336;
@@ -11387,7 +12486,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:844 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_338) {
@@ -11400,43 +12499,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:844 */
                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 +12559,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:845 */
                if (!once_value_341) {
                if (!once_value_342) {
                fra.me.REG[6] = BOX_NativeString("to_i");
@@ -11460,7 +12569,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_342);
                } else fra.me.REG[6] = once_value_342;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_341 = fra.me.REG[6];
                register_static_object(&once_value_341);
                } else fra.me.REG[6] = once_value_341;
@@ -11472,7 +12581,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:846 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_343) {
@@ -11485,43 +12594,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:846 */
                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 +12654,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:847 */
                if (!once_value_346) {
                if (!once_value_347) {
                fra.me.REG[6] = BOX_NativeString("==");
@@ -11545,7 +12664,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_347);
                } else fra.me.REG[6] = once_value_347;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_346 = fra.me.REG[6];
                register_static_object(&once_value_346);
                } else fra.me.REG[6] = once_value_346;
@@ -11557,7 +12676,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:848 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_348) {
@@ -11570,43 +12689,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:848 */
                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 +12747,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:848 */
                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 +12807,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:849 */
                if (!once_value_353) {
                if (!once_value_354) {
                fra.me.REG[6] = BOX_NativeString("!=");
@@ -11678,7 +12817,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_354);
                } else fra.me.REG[6] = once_value_354;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_353 = fra.me.REG[6];
                register_static_object(&once_value_353);
                } else fra.me.REG[6] = once_value_353;
@@ -11690,7 +12829,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:850 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_355) {
@@ -11703,43 +12842,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:850 */
                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 +12900,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:850 */
                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 +12967,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             }
           }
         } else {
-          /* ./compiling//compiling_icode.nit:834 */
+          /* compiling/compiling_icode.nit:852 */
           if (!once_value_360) {
             if (!once_value_361) {
               fra.me.REG[6] = BOX_NativeString("NativeArray");
@@ -11818,7 +12977,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               register_static_object(&once_value_361);
             } else fra.me.REG[6] = once_value_361;
             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]);
+            fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
             once_value_360 = fra.me.REG[6];
             register_static_object(&once_value_360);
           } else fra.me.REG[6] = once_value_360;
@@ -11830,7 +12989,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:853 */
             if (!once_value_362) {
               if (!once_value_363) {
                fra.me.REG[6] = BOX_NativeString("object_id");
@@ -11840,7 +12999,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_363);
               } else fra.me.REG[6] = once_value_363;
               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]);
+              fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
               once_value_362 = fra.me.REG[6];
               register_static_object(&once_value_362);
             } else fra.me.REG[6] = once_value_362;
@@ -11852,7 +13011,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:854 */
               REGB1 = TAG_Int(3);
               fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
               if (!once_value_364) {
@@ -11865,43 +13024,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:236 */
               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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
               } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
               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:854 */
               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 +13084,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:855 */
               if (!once_value_367) {
                if (!once_value_368) {
                fra.me.REG[6] = BOX_NativeString("[]");
@@ -11925,7 +13094,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_368);
                } else fra.me.REG[6] = once_value_368;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_367 = fra.me.REG[6];
                register_static_object(&once_value_367);
               } else fra.me.REG[6] = once_value_367;
@@ -11937,7 +13106,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:856 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_369) {
@@ -11950,43 +13119,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:856 */
                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 +13177,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:856 */
                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 +13237,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:857 */
                if (!once_value_374) {
                if (!once_value_375) {
                fra.me.REG[6] = BOX_NativeString("[]=");
@@ -12058,7 +13247,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_375);
                } else fra.me.REG[6] = once_value_375;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_374 = fra.me.REG[6];
                register_static_object(&once_value_374);
                } else fra.me.REG[6] = once_value_374;
@@ -12070,7 +13259,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:858 */
                REGB1 = TAG_Int(7);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_376) {
@@ -12083,43 +13272,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:858 */
                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 +13330,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:858 */
                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 +13388,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:858 */
                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 +13448,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:859 */
                if (!once_value_383) {
                if (!once_value_384) {
                fra.me.REG[6] = BOX_NativeString("copy_to");
@@ -12239,7 +13458,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_384);
                } else fra.me.REG[6] = once_value_384;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_383 = fra.me.REG[6];
                register_static_object(&once_value_383);
                } else fra.me.REG[6] = once_value_383;
@@ -12251,7 +13470,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:860 */
                REGB1 = TAG_Int(7);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_385) {
@@ -12264,43 +13483,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:860 */
                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 +13541,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:860 */
                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 +13599,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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                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:860 */
                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 +13663,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               }
             }
           } else {
-            /* ./compiling//compiling_icode.nit:844 */
+            /* compiling/compiling_icode.nit:862 */
             if (!once_value_392) {
               if (!once_value_393) {
                fra.me.REG[6] = BOX_NativeString("NativeString");
@@ -12424,7 +13673,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_393);
               } else fra.me.REG[6] = once_value_393;
               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]);
+              fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
               once_value_392 = fra.me.REG[6];
               register_static_object(&once_value_392);
             } else fra.me.REG[6] = once_value_392;
@@ -12436,7 +13685,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:863 */
               if (!once_value_394) {
                if (!once_value_395) {
                fra.me.REG[6] = BOX_NativeString("object_id");
@@ -12446,7 +13695,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_395);
                } else fra.me.REG[6] = once_value_395;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_394 = fra.me.REG[6];
                register_static_object(&once_value_394);
               } else fra.me.REG[6] = once_value_394;
@@ -12458,70 +13707,80 @@ 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:864 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_396) {
-               fra.me.REG[2] = BOX_NativeString("TAG_Int(UNBOX_NativeString(");
+               fra.me.REG[7] = BOX_NativeString("TAG_Int(UNBOX_NativeString(");
                REGB1 = TAG_Int(27);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_396 = fra.me.REG[2];
+               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               once_value_396 = fra.me.REG[7];
                register_static_object(&once_value_396);
-               } else fra.me.REG[2] = once_value_396;
-               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]);
+               } else fra.me.REG[7] = once_value_396;
+               fra.me.REG[7] = fra.me.REG[7];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ./../lib/standard//collection//array.nit:243 */
-               fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ../lib/standard/collection/array.nit:278 */
+               fra.me.REG[7] = fra.me.REG[4];
+               /* ../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:236 */
                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);
+               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[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
+               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+               }
+               /* ../lib/standard/kernel.nit:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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 */
-               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[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 */
-               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:724 */
+               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
+               /* ../lib/standard/collection/array.nit:281 */
                goto label397;
                label397: while(0);
-               /* ./compiling//compiling_icode.nit:846 */
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+               /* compiling/compiling_icode.nit:864 */
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_398) {
-               fra.me.REG[2] = BOX_NativeString("))");
+               fra.me.REG[7] = BOX_NativeString("))");
                REGB1 = TAG_Int(2);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_398 = fra.me.REG[2];
+               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               once_value_398 = fra.me.REG[7];
                register_static_object(&once_value_398);
-               } else fra.me.REG[2] = once_value_398;
-               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]);
+               } else fra.me.REG[7] = once_value_398;
+               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]);
                fra.me.REG[5] = fra.me.REG[6];
               } else {
-               /* ./compiling//compiling_icode.nit:847 */
+               /* compiling/compiling_icode.nit:865 */
                if (!once_value_399) {
                if (!once_value_400) {
                fra.me.REG[6] = BOX_NativeString("atoi");
@@ -12531,7 +13790,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_400);
                } else fra.me.REG[6] = once_value_400;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_399 = fra.me.REG[6];
                register_static_object(&once_value_399);
                } else fra.me.REG[6] = once_value_399;
@@ -12543,70 +13802,80 @@ 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:866 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_401) {
-               fra.me.REG[2] = BOX_NativeString("TAG_Int(atoi(UNBOX_NativeString(");
+               fra.me.REG[7] = BOX_NativeString("TAG_Int(atoi(UNBOX_NativeString(");
                REGB1 = TAG_Int(32);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_401 = fra.me.REG[2];
+               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               once_value_401 = fra.me.REG[7];
                register_static_object(&once_value_401);
-               } else fra.me.REG[2] = once_value_401;
-               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]);
+               } else fra.me.REG[7] = once_value_401;
+               fra.me.REG[7] = fra.me.REG[7];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ./../lib/standard//collection//array.nit:243 */
-               fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ../lib/standard/collection/array.nit:278 */
+               fra.me.REG[7] = fra.me.REG[4];
+               /* ../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:236 */
                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);
+               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[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
+               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+               }
+               /* ../lib/standard/kernel.nit:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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 */
-               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[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 */
-               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:724 */
+               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
+               /* ../lib/standard/collection/array.nit:281 */
                goto label402;
                label402: while(0);
-               /* ./compiling//compiling_icode.nit:848 */
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+               /* compiling/compiling_icode.nit:866 */
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_403) {
-               fra.me.REG[2] = BOX_NativeString(")))");
+               fra.me.REG[7] = BOX_NativeString(")))");
                REGB1 = TAG_Int(3);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_403 = fra.me.REG[2];
+               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               once_value_403 = fra.me.REG[7];
                register_static_object(&once_value_403);
-               } else fra.me.REG[2] = once_value_403;
-               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]);
+               } else fra.me.REG[7] = once_value_403;
+               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]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:849 */
+               /* compiling/compiling_icode.nit:867 */
                if (!once_value_404) {
                if (!once_value_405) {
                fra.me.REG[6] = BOX_NativeString("[]");
@@ -12616,7 +13885,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_405);
                } else fra.me.REG[6] = once_value_405;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_404 = fra.me.REG[6];
                register_static_object(&once_value_404);
                } else fra.me.REG[6] = once_value_404;
@@ -12628,118 +13897,138 @@ 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:868 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_406) {
-               fra.me.REG[2] = BOX_NativeString("TAG_Char(UNBOX_NativeString(");
+               fra.me.REG[7] = BOX_NativeString("TAG_Char(UNBOX_NativeString(");
                REGB1 = TAG_Int(28);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_406 = fra.me.REG[2];
+               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               once_value_406 = fra.me.REG[7];
                register_static_object(&once_value_406);
-               } else fra.me.REG[2] = once_value_406;
-               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]);
+               } else fra.me.REG[7] = once_value_406;
+               fra.me.REG[7] = fra.me.REG[7];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ./../lib/standard//collection//array.nit:243 */
-               fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ../lib/standard/collection/array.nit:278 */
+               fra.me.REG[7] = fra.me.REG[4];
+               /* ../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:236 */
                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);
+               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[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
+               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+               }
+               /* ../lib/standard/kernel.nit:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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 */
-               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[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 */
-               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:724 */
+               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
+               /* ../lib/standard/collection/array.nit:281 */
                goto label407;
                label407: while(0);
-               /* ./compiling//compiling_icode.nit:850 */
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+               /* compiling/compiling_icode.nit:868 */
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_408) {
-               fra.me.REG[2] = BOX_NativeString(")[UNTAG_Int(");
+               fra.me.REG[7] = BOX_NativeString(")[UNTAG_Int(");
                REGB1 = TAG_Int(12);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_408 = fra.me.REG[2];
+               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               once_value_408 = fra.me.REG[7];
                register_static_object(&once_value_408);
-               } else fra.me.REG[2] = once_value_408;
-               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]);
+               } else fra.me.REG[7] = once_value_408;
+               fra.me.REG[7] = fra.me.REG[7];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ./../lib/standard//collection//array.nit:243 */
-               fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ../lib/standard/collection/array.nit:278 */
+               fra.me.REG[7] = fra.me.REG[4];
+               /* ../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:236 */
                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);
+               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[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
+               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+               }
+               /* ../lib/standard/kernel.nit:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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 */
-               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[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 */
-               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:724 */
+               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
+               /* ../lib/standard/collection/array.nit:281 */
                goto label409;
                label409: while(0);
-               /* ./compiling//compiling_icode.nit:850 */
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+               /* compiling/compiling_icode.nit:868 */
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_410) {
-               fra.me.REG[2] = BOX_NativeString(")])");
+               fra.me.REG[7] = BOX_NativeString(")])");
                REGB1 = TAG_Int(3);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_410 = fra.me.REG[2];
+               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               once_value_410 = fra.me.REG[7];
                register_static_object(&once_value_410);
-               } else fra.me.REG[2] = once_value_410;
-               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]);
+               } else fra.me.REG[7] = once_value_410;
+               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]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:851 */
+               /* compiling/compiling_icode.nit:869 */
                if (!once_value_411) {
                if (!once_value_412) {
                fra.me.REG[6] = BOX_NativeString("[]=");
@@ -12749,7 +14038,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_412);
                } else fra.me.REG[6] = once_value_412;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_411 = fra.me.REG[6];
                register_static_object(&once_value_411);
                } else fra.me.REG[6] = once_value_411;
@@ -12761,166 +14050,196 @@ 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:870 */
                REGB1 = TAG_Int(7);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_413) {
-               fra.me.REG[2] = BOX_NativeString("UNBOX_NativeString(");
+               fra.me.REG[7] = BOX_NativeString("UNBOX_NativeString(");
                REGB1 = TAG_Int(19);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_413 = fra.me.REG[2];
+               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               once_value_413 = fra.me.REG[7];
                register_static_object(&once_value_413);
-               } else fra.me.REG[2] = once_value_413;
-               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]);
+               } else fra.me.REG[7] = once_value_413;
+               fra.me.REG[7] = fra.me.REG[7];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ./../lib/standard//collection//array.nit:243 */
-               fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ../lib/standard/collection/array.nit:278 */
+               fra.me.REG[7] = fra.me.REG[4];
+               /* ../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:236 */
                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);
+               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[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
+               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+               }
+               /* ../lib/standard/kernel.nit:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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 */
-               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[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 */
-               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:724 */
+               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
+               /* ../lib/standard/collection/array.nit:281 */
                goto label414;
                label414: while(0);
-               /* ./compiling//compiling_icode.nit:852 */
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+               /* compiling/compiling_icode.nit:870 */
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_415) {
-               fra.me.REG[2] = BOX_NativeString(")[UNTAG_Int(");
+               fra.me.REG[7] = BOX_NativeString(")[UNTAG_Int(");
                REGB1 = TAG_Int(12);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_415 = fra.me.REG[2];
+               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               once_value_415 = fra.me.REG[7];
                register_static_object(&once_value_415);
-               } else fra.me.REG[2] = once_value_415;
-               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]);
+               } else fra.me.REG[7] = once_value_415;
+               fra.me.REG[7] = fra.me.REG[7];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ./../lib/standard//collection//array.nit:243 */
-               fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ../lib/standard/collection/array.nit:278 */
+               fra.me.REG[7] = fra.me.REG[4];
+               /* ../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:236 */
                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);
+               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[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
+               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+               }
+               /* ../lib/standard/kernel.nit:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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 */
-               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[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 */
-               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:724 */
+               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
+               /* ../lib/standard/collection/array.nit:281 */
                goto label416;
                label416: while(0);
-               /* ./compiling//compiling_icode.nit:852 */
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+               /* compiling/compiling_icode.nit:870 */
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_417) {
-               fra.me.REG[2] = BOX_NativeString(")]=UNTAG_Char(");
+               fra.me.REG[7] = BOX_NativeString(")]=UNTAG_Char(");
                REGB1 = TAG_Int(14);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_417 = fra.me.REG[2];
+               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               once_value_417 = fra.me.REG[7];
                register_static_object(&once_value_417);
-               } else fra.me.REG[2] = once_value_417;
-               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]);
+               } else fra.me.REG[7] = once_value_417;
+               fra.me.REG[7] = fra.me.REG[7];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(2);
-               /* ./../lib/standard//collection//array.nit:243 */
-               fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ../lib/standard/collection/array.nit:278 */
+               fra.me.REG[7] = fra.me.REG[4];
+               /* ../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:236 */
                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);
+               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[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
+               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+               }
+               /* ../lib/standard/kernel.nit:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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 */
-               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[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 */
-               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:724 */
+               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
+               /* ../lib/standard/collection/array.nit:281 */
                goto label418;
                label418: while(0);
-               /* ./compiling//compiling_icode.nit:852 */
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+               /* compiling/compiling_icode.nit:870 */
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_419) {
-               fra.me.REG[2] = BOX_NativeString(");");
+               fra.me.REG[7] = BOX_NativeString(");");
                REGB1 = TAG_Int(2);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_419 = fra.me.REG[2];
+               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               once_value_419 = fra.me.REG[7];
                register_static_object(&once_value_419);
-               } else fra.me.REG[2] = once_value_419;
-               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]);
+               } else fra.me.REG[7] = once_value_419;
+               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]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:853 */
+               /* compiling/compiling_icode.nit:871 */
                if (!once_value_420) {
                if (!once_value_421) {
                fra.me.REG[6] = BOX_NativeString("copy_to");
@@ -12930,7 +14249,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                register_static_object(&once_value_421);
                } else fra.me.REG[6] = once_value_421;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_420 = fra.me.REG[6];
                register_static_object(&once_value_420);
                } else fra.me.REG[6] = once_value_420;
@@ -12942,258 +14261,308 @@ 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:872 */
                REGB1 = TAG_Int(11);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_422) {
-               fra.me.REG[2] = BOX_NativeString("(void)memcpy(UNBOX_NativeString(");
+               fra.me.REG[7] = BOX_NativeString("(void)memcpy(UNBOX_NativeString(");
                REGB1 = TAG_Int(32);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_422 = fra.me.REG[2];
+               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               once_value_422 = fra.me.REG[7];
                register_static_object(&once_value_422);
-               } else fra.me.REG[2] = once_value_422;
-               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]);
+               } else fra.me.REG[7] = once_value_422;
+               fra.me.REG[7] = fra.me.REG[7];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(1);
-               /* ./../lib/standard//collection//array.nit:243 */
-               fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ../lib/standard/collection/array.nit:278 */
+               fra.me.REG[7] = fra.me.REG[4];
+               /* ../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:236 */
                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);
+               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[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
+               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+               }
+               /* ../lib/standard/kernel.nit:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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 */
-               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[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 */
-               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:724 */
+               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
+               /* ../lib/standard/collection/array.nit:281 */
                goto label423;
                label423: while(0);
-               /* ./compiling//compiling_icode.nit:854 */
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+               /* compiling/compiling_icode.nit:872 */
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_424) {
-               fra.me.REG[2] = BOX_NativeString(")+UNTAG_Int(");
+               fra.me.REG[7] = BOX_NativeString(")+UNTAG_Int(");
                REGB1 = TAG_Int(12);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_424 = fra.me.REG[2];
+               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               once_value_424 = fra.me.REG[7];
                register_static_object(&once_value_424);
-               } else fra.me.REG[2] = once_value_424;
-               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]);
+               } else fra.me.REG[7] = once_value_424;
+               fra.me.REG[7] = fra.me.REG[7];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(4);
-               /* ./../lib/standard//collection//array.nit:243 */
-               fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ../lib/standard/collection/array.nit:278 */
+               fra.me.REG[7] = fra.me.REG[4];
+               /* ../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:236 */
                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);
+               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[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
+               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+               }
+               /* ../lib/standard/kernel.nit:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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 */
-               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[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 */
-               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:724 */
+               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
+               /* ../lib/standard/collection/array.nit:281 */
                goto label425;
                label425: while(0);
-               /* ./compiling//compiling_icode.nit:854 */
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+               /* compiling/compiling_icode.nit:872 */
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_426) {
-               fra.me.REG[2] = BOX_NativeString("), UNBOX_NativeString(");
+               fra.me.REG[7] = BOX_NativeString("), UNBOX_NativeString(");
                REGB1 = TAG_Int(22);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_426 = fra.me.REG[2];
+               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               once_value_426 = fra.me.REG[7];
                register_static_object(&once_value_426);
-               } else fra.me.REG[2] = once_value_426;
-               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]);
+               } else fra.me.REG[7] = once_value_426;
+               fra.me.REG[7] = fra.me.REG[7];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(0);
-               /* ./../lib/standard//collection//array.nit:243 */
-               fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ../lib/standard/collection/array.nit:278 */
+               fra.me.REG[7] = fra.me.REG[4];
+               /* ../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:236 */
                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);
+               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[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
+               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+               }
+               /* ../lib/standard/kernel.nit:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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 */
-               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[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 */
-               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:724 */
+               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
+               /* ../lib/standard/collection/array.nit:281 */
                goto label427;
                label427: while(0);
-               /* ./compiling//compiling_icode.nit:854 */
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+               /* compiling/compiling_icode.nit:872 */
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_428) {
-               fra.me.REG[2] = BOX_NativeString(")+UNTAG_Int(");
+               fra.me.REG[7] = BOX_NativeString(")+UNTAG_Int(");
                REGB1 = TAG_Int(12);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_428 = fra.me.REG[2];
+               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               once_value_428 = fra.me.REG[7];
                register_static_object(&once_value_428);
-               } else fra.me.REG[2] = once_value_428;
-               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]);
+               } else fra.me.REG[7] = once_value_428;
+               fra.me.REG[7] = fra.me.REG[7];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(3);
-               /* ./../lib/standard//collection//array.nit:243 */
-               fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ../lib/standard/collection/array.nit:278 */
+               fra.me.REG[7] = fra.me.REG[4];
+               /* ../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:236 */
                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);
+               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[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
+               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+               }
+               /* ../lib/standard/kernel.nit:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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 */
-               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[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 */
-               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:724 */
+               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
+               /* ../lib/standard/collection/array.nit:281 */
                goto label429;
                label429: while(0);
-               /* ./compiling//compiling_icode.nit:854 */
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+               /* compiling/compiling_icode.nit:872 */
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_430) {
-               fra.me.REG[2] = BOX_NativeString("), UNTAG_Int(");
+               fra.me.REG[7] = BOX_NativeString("), UNTAG_Int(");
                REGB1 = TAG_Int(13);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_430 = fra.me.REG[2];
+               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               once_value_430 = fra.me.REG[7];
                register_static_object(&once_value_430);
-               } else fra.me.REG[2] = once_value_430;
-               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]);
+               } else fra.me.REG[7] = once_value_430;
+               fra.me.REG[7] = fra.me.REG[7];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                REGB1 = TAG_Int(2);
-               /* ./../lib/standard//collection//array.nit:243 */
-               fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ../lib/standard/collection/array.nit:278 */
+               fra.me.REG[7] = fra.me.REG[4];
+               /* ../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:236 */
                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);
+               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[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
+               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+               }
+               /* ../lib/standard/kernel.nit:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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 */
-               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[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 */
-               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:724 */
+               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
+               /* ../lib/standard/collection/array.nit:281 */
                goto label431;
                label431: while(0);
-               /* ./compiling//compiling_icode.nit:854 */
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+               /* compiling/compiling_icode.nit:872 */
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_432) {
-               fra.me.REG[2] = BOX_NativeString("));");
+               fra.me.REG[7] = BOX_NativeString("));");
                REGB1 = TAG_Int(3);
-               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_432 = fra.me.REG[2];
+               fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+               once_value_432 = fra.me.REG[7];
                register_static_object(&once_value_432);
-               } else fra.me.REG[2] = once_value_432;
-               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]);
+               } else fra.me.REG[7] = once_value_432;
+               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]);
                fra.me.REG[5] = fra.me.REG[6];
                }
@@ -13202,105 +14571,301 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                }
               }
             } else {
-              /* ./compiling//compiling_icode.nit:856 */
+              /* compiling/compiling_icode.nit:874 */
               if (!once_value_433) {
                if (!once_value_434) {
-               fra.me.REG[6] = BOX_NativeString("object_id");
-               REGB1 = TAG_Int(9);
+               fra.me.REG[6] = BOX_NativeString("Sys");
+               REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
                once_value_434 = fra.me.REG[6];
                register_static_object(&once_value_434);
                } else fra.me.REG[6] = once_value_434;
                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]);
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
                once_value_433 = fra.me.REG[6];
                register_static_object(&once_value_433);
               } else fra.me.REG[6] = once_value_433;
               fra.me.REG[6] = fra.me.REG[6];
-              REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[6]));
+              REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[6]));
               if (UNTAG_Bool(REGB1)) {
               } else {
-               REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+               REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
                REGB1 = REGB2;
               }
               if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:857 */
+               /* compiling/compiling_icode.nit:875 */
+               if (!once_value_435) {
+               if (!once_value_436) {
+               fra.me.REG[6] = BOX_NativeString("force_garbage_collection");
+               REGB1 = TAG_Int(24);
+               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               once_value_436 = fra.me.REG[6];
+               register_static_object(&once_value_436);
+               } else fra.me.REG[6] = once_value_436;
+               fra.me.REG[6] = fra.me.REG[6];
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
+               once_value_435 = fra.me.REG[6];
+               register_static_object(&once_value_435);
+               } else fra.me.REG[6] = once_value_435;
+               fra.me.REG[6] = fra.me.REG[6];
+               REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[6]));
+               if (UNTAG_Bool(REGB1)) {
+               } else {
+               REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+               REGB1 = REGB2;
+               }
+               if (UNTAG_Bool(REGB1)) {
+               /* compiling/compiling_icode.nit:876 */
+               if (!once_value_437) {
+               fra.me.REG[6] = BOX_NativeString("Nit_gc_force_garbage_collection()");
+               REGB1 = TAG_Int(33);
+               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               once_value_437 = fra.me.REG[6];
+               register_static_object(&once_value_437);
+               } else fra.me.REG[6] = once_value_437;
+               fra.me.REG[6] = fra.me.REG[6];
+               fra.me.REG[5] = fra.me.REG[6];
+               } else {
+               /* compiling/compiling_icode.nit:877 */
+               if (!once_value_438) {
+               if (!once_value_439) {
+               fra.me.REG[6] = BOX_NativeString("native_argc");
+               REGB1 = TAG_Int(11);
+               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               once_value_439 = fra.me.REG[6];
+               register_static_object(&once_value_439);
+               } else fra.me.REG[6] = once_value_439;
+               fra.me.REG[6] = fra.me.REG[6];
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
+               once_value_438 = fra.me.REG[6];
+               register_static_object(&once_value_438);
+               } else fra.me.REG[6] = once_value_438;
+               fra.me.REG[6] = fra.me.REG[6];
+               REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[6]));
+               if (UNTAG_Bool(REGB1)) {
+               } else {
+               REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+               REGB1 = REGB2;
+               }
+               if (UNTAG_Bool(REGB1)) {
+               /* compiling/compiling_icode.nit:878 */
+               if (!once_value_440) {
+               fra.me.REG[6] = BOX_NativeString("TAG_Int(glob_argc)");
+               REGB1 = TAG_Int(18);
+               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               once_value_440 = fra.me.REG[6];
+               register_static_object(&once_value_440);
+               } else fra.me.REG[6] = once_value_440;
+               fra.me.REG[6] = fra.me.REG[6];
+               fra.me.REG[5] = fra.me.REG[6];
+               } else {
+               /* compiling/compiling_icode.nit:879 */
+               if (!once_value_441) {
+               if (!once_value_442) {
+               fra.me.REG[6] = BOX_NativeString("native_argv");
+               REGB1 = TAG_Int(11);
+               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               once_value_442 = fra.me.REG[6];
+               register_static_object(&once_value_442);
+               } else fra.me.REG[6] = once_value_442;
+               fra.me.REG[6] = fra.me.REG[6];
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
+               once_value_441 = fra.me.REG[6];
+               register_static_object(&once_value_441);
+               } else fra.me.REG[6] = once_value_441;
+               fra.me.REG[6] = fra.me.REG[6];
+               REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[6]));
+               if (UNTAG_Bool(REGB1)) {
+               } else {
+               REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+               REGB1 = REGB2;
+               }
+               if (UNTAG_Bool(REGB1)) {
+               /* 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_435) {
+               if (!once_value_443) {
+               fra.me.REG[2] = BOX_NativeString("BOX_NativeString(glob_argv[UNTAG_Int(");
+               REGB1 = TAG_Int(37);
+               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+               once_value_443 = fra.me.REG[2];
+               register_static_object(&once_value_443);
+               } else fra.me.REG[2] = once_value_443;
+               fra.me.REG[2] = fra.me.REG[2];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+               REGB1 = TAG_Int(1);
+               /* ../lib/standard/collection/array.nit:278 */
+               fra.me.REG[2] = fra.me.REG[4];
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB2 = TAG_Int(0);
+               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+               }
+               /* ../lib/standard/kernel.nit:236 */
+               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]);
+               REGB0 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+               }
+               /* ../lib/standard/kernel.nit:235 */
+               REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
+               } else {
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
+               REGB2 = REGB0;
+               }
+               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:724 */
+               fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
+               /* ../lib/standard/collection/array.nit:281 */
+               goto label444;
+               label444: while(0);
+               /* 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_445) {
+               fra.me.REG[2] = BOX_NativeString(")])");
+               REGB1 = TAG_Int(3);
+               fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
+               once_value_445 = fra.me.REG[2];
+               register_static_object(&once_value_445);
+               } else fra.me.REG[2] = once_value_445;
+               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]);
+               fra.me.REG[5] = fra.me.REG[6];
+               }
+               }
+               }
+              } else {
+               /* compiling/compiling_icode.nit:882 */
+               if (!once_value_446) {
+               if (!once_value_447) {
+               fra.me.REG[6] = BOX_NativeString("object_id");
+               REGB1 = TAG_Int(9);
+               fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+               once_value_447 = fra.me.REG[6];
+               register_static_object(&once_value_447);
+               } else fra.me.REG[6] = once_value_447;
+               fra.me.REG[6] = fra.me.REG[6];
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
+               once_value_446 = fra.me.REG[6];
+               register_static_object(&once_value_446);
+               } else fra.me.REG[6] = once_value_446;
+               fra.me.REG[6] = fra.me.REG[6];
+               REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[6]));
+               if (UNTAG_Bool(REGB1)) {
+               } else {
+               REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+               REGB1 = REGB2;
+               }
+               if (UNTAG_Bool(REGB1)) {
+               /* compiling/compiling_icode.nit:883 */
+               REGB1 = TAG_Int(3);
+               fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+               if (!once_value_448) {
                fra.me.REG[2] = BOX_NativeString("TAG_Int((bigint)((obj_t)");
                REGB1 = TAG_Int(24);
                fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_435 = fra.me.REG[2];
-               register_static_object(&once_value_435);
-               } else fra.me.REG[2] = once_value_435;
+               once_value_448 = fra.me.REG[2];
+               register_static_object(&once_value_448);
+               } else fra.me.REG[2] = once_value_448;
                fra.me.REG[2] = fra.me.REG[2];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                REGB1 = TAG_Int(0);
-               /* ./../lib/standard//collection//array.nit: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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
-               goto label436;
-               label436: while(0);
-               /* ./compiling//compiling_icode.nit:857 */
+               /* ../lib/standard/collection/array.nit:281 */
+               goto label449;
+               label449: while(0);
+               /* compiling/compiling_icode.nit:883 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
-               if (!once_value_437) {
+               if (!once_value_450) {
                fra.me.REG[2] = BOX_NativeString(")[1].object_id)");
                REGB1 = TAG_Int(15);
                fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_437 = fra.me.REG[2];
-               register_static_object(&once_value_437);
-               } else fra.me.REG[2] = once_value_437;
+               once_value_450 = fra.me.REG[2];
+               register_static_object(&once_value_450);
+               } else fra.me.REG[2] = once_value_450;
                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]);
                fra.me.REG[5] = fra.me.REG[6];
-              } else {
-               /* ./compiling//compiling_icode.nit:858 */
-               if (!once_value_438) {
-               if (!once_value_439) {
+               } else {
+               /* compiling/compiling_icode.nit:884 */
+               if (!once_value_451) {
+               if (!once_value_452) {
                fra.me.REG[6] = BOX_NativeString("sys");
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-               once_value_439 = fra.me.REG[6];
-               register_static_object(&once_value_439);
-               } else fra.me.REG[6] = once_value_439;
+               once_value_452 = fra.me.REG[6];
+               register_static_object(&once_value_452);
+               } else fra.me.REG[6] = once_value_452;
                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_438 = fra.me.REG[6];
-               register_static_object(&once_value_438);
-               } else fra.me.REG[6] = once_value_438;
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
+               once_value_451 = fra.me.REG[6];
+               register_static_object(&once_value_451);
+               } else fra.me.REG[6] = once_value_451;
                fra.me.REG[6] = fra.me.REG[6];
                REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[6]));
                if (UNTAG_Bool(REGB1)) {
@@ -13309,31 +14874,31 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:859 */
-               if (!once_value_440) {
+               /* compiling/compiling_icode.nit:885 */
+               if (!once_value_453) {
                fra.me.REG[6] = BOX_NativeString("(G_sys)");
                REGB1 = TAG_Int(7);
                fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-               once_value_440 = fra.me.REG[6];
-               register_static_object(&once_value_440);
-               } else fra.me.REG[6] = once_value_440;
+               once_value_453 = fra.me.REG[6];
+               register_static_object(&once_value_453);
+               } else fra.me.REG[6] = once_value_453;
                fra.me.REG[6] = fra.me.REG[6];
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:860 */
-               if (!once_value_441) {
-               if (!once_value_442) {
+               /* compiling/compiling_icode.nit:886 */
+               if (!once_value_454) {
+               if (!once_value_455) {
                fra.me.REG[6] = BOX_NativeString("is_same_type");
                REGB1 = TAG_Int(12);
                fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-               once_value_442 = fra.me.REG[6];
-               register_static_object(&once_value_442);
-               } else fra.me.REG[6] = once_value_442;
+               once_value_455 = fra.me.REG[6];
+               register_static_object(&once_value_455);
+               } else fra.me.REG[6] = once_value_455;
                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_441 = fra.me.REG[6];
-               register_static_object(&once_value_441);
-               } else fra.me.REG[6] = once_value_441;
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
+               once_value_454 = fra.me.REG[6];
+               register_static_object(&once_value_454);
+               } else fra.me.REG[6] = once_value_454;
                fra.me.REG[6] = fra.me.REG[6];
                REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[6]));
                if (UNTAG_Bool(REGB1)) {
@@ -13342,131 +14907,151 @@ 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:887 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-               if (!once_value_443) {
+               if (!once_value_456) {
                fra.me.REG[2] = BOX_NativeString("TAG_Bool((VAL2VFT(");
                REGB1 = TAG_Int(18);
                fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_443 = fra.me.REG[2];
-               register_static_object(&once_value_443);
-               } else fra.me.REG[2] = once_value_443;
+               once_value_456 = fra.me.REG[2];
+               register_static_object(&once_value_456);
+               } else fra.me.REG[2] = once_value_456;
                fra.me.REG[2] = fra.me.REG[2];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                REGB1 = TAG_Int(0);
-               /* ./../lib/standard//collection//array.nit: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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
-               goto label444;
-               label444: while(0);
-               /* ./compiling//compiling_icode.nit:861 */
+               /* ../lib/standard/collection/array.nit:281 */
+               goto label457;
+               label457: while(0);
+               /* compiling/compiling_icode.nit:887 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
-               if (!once_value_445) {
+               if (!once_value_458) {
                fra.me.REG[2] = BOX_NativeString(")==VAL2VFT(");
                REGB1 = TAG_Int(11);
                fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_445 = fra.me.REG[2];
-               register_static_object(&once_value_445);
-               } else fra.me.REG[2] = once_value_445;
+               once_value_458 = fra.me.REG[2];
+               register_static_object(&once_value_458);
+               } else fra.me.REG[2] = once_value_458;
                fra.me.REG[2] = fra.me.REG[2];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                REGB1 = TAG_Int(1);
-               /* ./../lib/standard//collection//array.nit: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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
-               goto label446;
-               label446: while(0);
-               /* ./compiling//compiling_icode.nit:861 */
+               /* ../lib/standard/collection/array.nit:281 */
+               goto label459;
+               label459: while(0);
+               /* compiling/compiling_icode.nit:887 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
-               if (!once_value_447) {
+               if (!once_value_460) {
                fra.me.REG[2] = BOX_NativeString(")))");
                REGB1 = TAG_Int(3);
                fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_447 = fra.me.REG[2];
-               register_static_object(&once_value_447);
-               } else fra.me.REG[2] = once_value_447;
+               once_value_460 = fra.me.REG[2];
+               register_static_object(&once_value_460);
+               } else fra.me.REG[2] = once_value_460;
                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]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:862 */
-               if (!once_value_448) {
-               if (!once_value_449) {
+               /* compiling/compiling_icode.nit:888 */
+               if (!once_value_461) {
+               if (!once_value_462) {
                fra.me.REG[6] = BOX_NativeString("exit");
                REGB1 = TAG_Int(4);
                fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-               once_value_449 = fra.me.REG[6];
-               register_static_object(&once_value_449);
-               } else fra.me.REG[6] = once_value_449;
+               once_value_462 = fra.me.REG[6];
+               register_static_object(&once_value_462);
+               } else fra.me.REG[6] = once_value_462;
                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_448 = fra.me.REG[6];
-               register_static_object(&once_value_448);
-               } else fra.me.REG[6] = once_value_448;
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
+               once_value_461 = fra.me.REG[6];
+               register_static_object(&once_value_461);
+               } else fra.me.REG[6] = once_value_461;
                fra.me.REG[6] = fra.me.REG[6];
                REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[6]));
                if (UNTAG_Bool(REGB1)) {
@@ -13475,83 +15060,93 @@ 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:889 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-               if (!once_value_450) {
+               if (!once_value_463) {
                fra.me.REG[2] = BOX_NativeString("exit(UNTAG_Int(");
                REGB1 = TAG_Int(15);
                fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_450 = fra.me.REG[2];
-               register_static_object(&once_value_450);
-               } else fra.me.REG[2] = once_value_450;
+               once_value_463 = fra.me.REG[2];
+               register_static_object(&once_value_463);
+               } else fra.me.REG[2] = once_value_463;
                fra.me.REG[2] = fra.me.REG[2];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                REGB1 = TAG_Int(1);
-               /* ./../lib/standard//collection//array.nit: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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
-               goto label451;
-               label451: while(0);
-               /* ./compiling//compiling_icode.nit:863 */
+               /* ../lib/standard/collection/array.nit:281 */
+               goto label464;
+               label464: while(0);
+               /* compiling/compiling_icode.nit:889 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
-               if (!once_value_452) {
+               if (!once_value_465) {
                fra.me.REG[2] = BOX_NativeString("));");
                REGB1 = TAG_Int(3);
                fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_452 = fra.me.REG[2];
-               register_static_object(&once_value_452);
-               } else fra.me.REG[2] = once_value_452;
+               once_value_465 = fra.me.REG[2];
+               register_static_object(&once_value_465);
+               } else fra.me.REG[2] = once_value_465;
                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]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:864 */
-               if (!once_value_453) {
-               if (!once_value_454) {
+               /* compiling/compiling_icode.nit:890 */
+               if (!once_value_466) {
+               if (!once_value_467) {
                fra.me.REG[6] = BOX_NativeString("calloc_array");
                REGB1 = TAG_Int(12);
                fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-               once_value_454 = fra.me.REG[6];
-               register_static_object(&once_value_454);
-               } else fra.me.REG[6] = once_value_454;
+               once_value_467 = fra.me.REG[6];
+               register_static_object(&once_value_467);
+               } else fra.me.REG[6] = once_value_467;
                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_453 = fra.me.REG[6];
-               register_static_object(&once_value_453);
-               } else fra.me.REG[6] = once_value_453;
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
+               once_value_466 = fra.me.REG[6];
+               register_static_object(&once_value_466);
+               } else fra.me.REG[6] = once_value_466;
                fra.me.REG[6] = fra.me.REG[6];
                REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[6]));
                if (UNTAG_Bool(REGB1)) {
@@ -13560,83 +15155,93 @@ 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:891 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-               if (!once_value_455) {
+               if (!once_value_468) {
                fra.me.REG[2] = BOX_NativeString("NEW_NativeArray(UNTAG_Int(");
                REGB1 = TAG_Int(26);
                fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_455 = fra.me.REG[2];
-               register_static_object(&once_value_455);
-               } else fra.me.REG[2] = once_value_455;
+               once_value_468 = fra.me.REG[2];
+               register_static_object(&once_value_468);
+               } else fra.me.REG[2] = once_value_468;
                fra.me.REG[2] = fra.me.REG[2];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                REGB1 = TAG_Int(1);
-               /* ./../lib/standard//collection//array.nit: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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
-               goto label456;
-               label456: while(0);
-               /* ./compiling//compiling_icode.nit:865 */
+               /* ../lib/standard/collection/array.nit:281 */
+               goto label469;
+               label469: while(0);
+               /* compiling/compiling_icode.nit:891 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
-               if (!once_value_457) {
+               if (!once_value_470) {
                fra.me.REG[2] = BOX_NativeString("), sizeof(val_t))");
                REGB1 = TAG_Int(17);
                fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_457 = fra.me.REG[2];
-               register_static_object(&once_value_457);
-               } else fra.me.REG[2] = once_value_457;
+               once_value_470 = fra.me.REG[2];
+               register_static_object(&once_value_470);
+               } else fra.me.REG[2] = once_value_470;
                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]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:866 */
-               if (!once_value_458) {
-               if (!once_value_459) {
+               /* compiling/compiling_icode.nit:892 */
+               if (!once_value_471) {
+               if (!once_value_472) {
                fra.me.REG[6] = BOX_NativeString("calloc_string");
                REGB1 = TAG_Int(13);
                fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-               once_value_459 = fra.me.REG[6];
-               register_static_object(&once_value_459);
-               } else fra.me.REG[6] = once_value_459;
+               once_value_472 = fra.me.REG[6];
+               register_static_object(&once_value_472);
+               } else fra.me.REG[6] = once_value_472;
                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_458 = fra.me.REG[6];
-               register_static_object(&once_value_458);
-               } else fra.me.REG[6] = once_value_458;
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
+               once_value_471 = fra.me.REG[6];
+               register_static_object(&once_value_471);
+               } else fra.me.REG[6] = once_value_471;
                fra.me.REG[6] = fra.me.REG[6];
                REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[6]));
                if (UNTAG_Bool(REGB1)) {
@@ -13645,83 +15250,93 @@ 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:893 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-               if (!once_value_460) {
+               if (!once_value_473) {
                fra.me.REG[2] = BOX_NativeString("BOX_NativeString((char*)raw_alloc((UNTAG_Int(");
                REGB1 = TAG_Int(45);
                fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_460 = fra.me.REG[2];
-               register_static_object(&once_value_460);
-               } else fra.me.REG[2] = once_value_460;
+               once_value_473 = fra.me.REG[2];
+               register_static_object(&once_value_473);
+               } else fra.me.REG[2] = once_value_473;
                fra.me.REG[2] = fra.me.REG[2];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                REGB1 = TAG_Int(1);
-               /* ./../lib/standard//collection//array.nit: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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
-               goto label461;
-               label461: while(0);
-               /* ./compiling//compiling_icode.nit:867 */
+               /* ../lib/standard/collection/array.nit:281 */
+               goto label474;
+               label474: while(0);
+               /* compiling/compiling_icode.nit:893 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
-               if (!once_value_462) {
+               if (!once_value_475) {
                fra.me.REG[2] = BOX_NativeString(") * sizeof(char))))");
                REGB1 = TAG_Int(19);
                fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_462 = fra.me.REG[2];
-               register_static_object(&once_value_462);
-               } else fra.me.REG[2] = once_value_462;
+               once_value_475 = fra.me.REG[2];
+               register_static_object(&once_value_475);
+               } else fra.me.REG[2] = once_value_475;
                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]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:869 */
-               if (!once_value_463) {
-               if (!once_value_464) {
+               /* compiling/compiling_icode.nit:895 */
+               if (!once_value_476) {
+               if (!once_value_477) {
                fra.me.REG[6] = BOX_NativeString("output_class_name");
                REGB1 = TAG_Int(17);
                fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-               once_value_464 = fra.me.REG[6];
-               register_static_object(&once_value_464);
-               } else fra.me.REG[6] = once_value_464;
+               once_value_477 = fra.me.REG[6];
+               register_static_object(&once_value_477);
+               } else fra.me.REG[6] = once_value_477;
                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_463 = fra.me.REG[6];
-               register_static_object(&once_value_463);
-               } else fra.me.REG[6] = once_value_463;
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
+               once_value_476 = fra.me.REG[6];
+               register_static_object(&once_value_476);
+               } else fra.me.REG[6] = once_value_476;
                fra.me.REG[6] = fra.me.REG[6];
                REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[6]));
                if (UNTAG_Bool(REGB1)) {
@@ -13730,83 +15345,93 @@ 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:896 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-               if (!once_value_465) {
+               if (!once_value_478) {
                fra.me.REG[2] = BOX_NativeString("printf(\"%s\\n\", VAL2VFT(");
                REGB1 = TAG_Int(23);
                fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_465 = fra.me.REG[2];
-               register_static_object(&once_value_465);
-               } else fra.me.REG[2] = once_value_465;
+               once_value_478 = fra.me.REG[2];
+               register_static_object(&once_value_478);
+               } else fra.me.REG[2] = once_value_478;
                fra.me.REG[2] = fra.me.REG[2];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                REGB1 = TAG_Int(0);
-               /* ./../lib/standard//collection//array.nit: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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
-               goto label466;
-               label466: while(0);
-               /* ./compiling//compiling_icode.nit:870 */
+               /* ../lib/standard/collection/array.nit:281 */
+               goto label479;
+               label479: while(0);
+               /* compiling/compiling_icode.nit:896 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
-               if (!once_value_467) {
+               if (!once_value_480) {
                fra.me.REG[2] = BOX_NativeString(")[2].cname);");
                REGB1 = TAG_Int(12);
                fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-               once_value_467 = fra.me.REG[2];
-               register_static_object(&once_value_467);
-               } else fra.me.REG[2] = once_value_467;
+               once_value_480 = fra.me.REG[2];
+               register_static_object(&once_value_480);
+               } else fra.me.REG[2] = once_value_480;
                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]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:872 */
-               if (!once_value_468) {
-               if (!once_value_469) {
+               /* compiling/compiling_icode.nit:898 */
+               if (!once_value_481) {
+               if (!once_value_482) {
                fra.me.REG[6] = BOX_NativeString("native_class_name");
                REGB1 = TAG_Int(17);
                fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-               once_value_469 = fra.me.REG[6];
-               register_static_object(&once_value_469);
-               } else fra.me.REG[6] = once_value_469;
+               once_value_482 = fra.me.REG[6];
+               register_static_object(&once_value_482);
+               } else fra.me.REG[6] = once_value_482;
                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_468 = fra.me.REG[6];
-               register_static_object(&once_value_468);
-               } else fra.me.REG[6] = once_value_468;
+               fra.me.REG[6] = CALL_symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
+               once_value_481 = fra.me.REG[6];
+               register_static_object(&once_value_481);
+               } else fra.me.REG[6] = once_value_481;
                fra.me.REG[6] = fra.me.REG[6];
                REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[6]));
                if (UNTAG_Bool(REGB1)) {
@@ -13815,62 +15440,72 @@ 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:899 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-               if (!once_value_470) {
+               if (!once_value_483) {
                fra.me.REG[3] = BOX_NativeString("BOX_NativeString(VAL2VFT(");
                REGB1 = TAG_Int(25);
                fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-               once_value_470 = fra.me.REG[3];
-               register_static_object(&once_value_470);
-               } else fra.me.REG[3] = once_value_470;
+               once_value_483 = fra.me.REG[3];
+               register_static_object(&once_value_483);
+               } else fra.me.REG[3] = once_value_483;
                fra.me.REG[3] = fra.me.REG[3];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
                REGB1 = TAG_Int(0);
-               /* ./../lib/standard//collection//array.nit: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:236 */
                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:235 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
-               REGB0 = TAG_Bool(false);
+               /* ../lib/standard/collection/array.nit:280 */
+               REGB0 = TAG_Bool(0);
                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:724 */
                fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
-               goto label471;
-               label471: while(0);
-               /* ./compiling//compiling_icode.nit:873 */
+               /* ../lib/standard/collection/array.nit:281 */
+               goto label484;
+               label484: while(0);
+               /* compiling/compiling_icode.nit:899 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
-               if (!once_value_472) {
+               if (!once_value_485) {
                fra.me.REG[4] = BOX_NativeString(")[2].cname);");
                REGB1 = TAG_Int(12);
                fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-               once_value_472 = fra.me.REG[4];
-               register_static_object(&once_value_472);
-               } else fra.me.REG[4] = once_value_472;
+               once_value_485 = fra.me.REG[4];
+               register_static_object(&once_value_485);
+               } else fra.me.REG[4] = once_value_485;
                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]);
@@ -13882,6 +15517,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                }
                }
                }
+               }
               }
             }
           }
@@ -13889,13 +15525,13 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
       }
     }
   }
-  /* ./compiling//compiling_icode.nit:876 */
+  /* compiling/compiling_icode.nit:902 */
   REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
     REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      REGB2 = TAG_Bool(false);
+      REGB2 = TAG_Bool(0);
       REGB1 = REGB2;
     } else {
       REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
@@ -13903,15 +15539,15 @@ 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:903 */
     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:904 */
     REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
       REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(false);
+        REGB2 = TAG_Bool(0);
         REGB1 = REGB2;
       } else {
         REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
@@ -13922,88 +15558,88 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Int(3);
       fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-      if (!once_value_473) {
+      if (!once_value_486) {
         fra.me.REG[3] = BOX_NativeString("fprintf(stderr, \"");
         REGB1 = TAG_Int(17);
         fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-        once_value_473 = fra.me.REG[3];
-        register_static_object(&once_value_473);
-      } else fra.me.REG[3] = once_value_473;
+        once_value_486 = fra.me.REG[3];
+        register_static_object(&once_value_486);
+      } else fra.me.REG[3] = once_value_486;
       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]);
       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, 904);
       }
       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]);
-      if (!once_value_474) {
+      if (!once_value_487) {
         fra.me.REG[6] = BOX_NativeString(": \");");
         REGB1 = TAG_Int(5);
         fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-        once_value_474 = fra.me.REG[6];
-        register_static_object(&once_value_474);
-      } else fra.me.REG[6] = once_value_474;
+        once_value_487 = fra.me.REG[6];
+        register_static_object(&once_value_487);
+      } else fra.me.REG[6] = once_value_487;
       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_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:905 */
     REGB1 = TAG_Int(3);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-    if (!once_value_475) {
+    if (!once_value_488) {
       fra.me.REG[6] = BOX_NativeString("fprintf(stderr, \"Fatal error: unknown intern method ");
       REGB1 = TAG_Int(52);
       fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-      once_value_475 = fra.me.REG[6];
-      register_static_object(&once_value_475);
-    } else fra.me.REG[6] = once_value_475;
+      once_value_488 = fra.me.REG[6];
+      register_static_object(&once_value_488);
+    } else fra.me.REG[6] = once_value_488;
     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_icode___icode_base___INative___method(fra.me.REG[0])(fra.me.REG[0]);
     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[4])(fra.me.REG[4], fra.me.REG[6]);
-    if (!once_value_476) {
+    if (!once_value_489) {
       fra.me.REG[6] = BOX_NativeString(".\\n\");");
       REGB1 = TAG_Int(6);
       fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-      once_value_476 = fra.me.REG[6];
-      register_static_object(&once_value_476);
-    } else fra.me.REG[6] = once_value_476;
+      once_value_489 = fra.me.REG[6];
+      register_static_object(&once_value_489);
+    } else fra.me.REG[6] = once_value_489;
     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_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-    /* ./compiling//compiling_icode.nit:880 */
-    if (!once_value_477) {
+    /* compiling/compiling_icode.nit:906 */
+    if (!once_value_490) {
       fra.me.REG[4] = BOX_NativeString("nit_exit(1);");
       REGB1 = TAG_Int(12);
       fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-      once_value_477 = fra.me.REG[4];
-      register_static_object(&once_value_477);
-    } else fra.me.REG[4] = once_value_477;
+      once_value_490 = fra.me.REG[4];
+      register_static_object(&once_value_490);
+    } else fra.me.REG[4] = once_value_490;
     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 */
-    if (!once_value_478) {
+    /* compiling/compiling_icode.nit:907 */
+    if (!once_value_491) {
       fra.me.REG[4] = BOX_NativeString("NIT_NULL");
       REGB1 = TAG_Int(8);
       fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-      once_value_478 = fra.me.REG[4];
-      register_static_object(&once_value_478);
-    } else fra.me.REG[4] = once_value_478;
+      once_value_491 = fra.me.REG[4];
+      register_static_object(&once_value_491);
+    } else fra.me.REG[4] = once_value_491;
     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:909 */
   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)) {
   } else {
     REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      REGB2 = TAG_Bool(false);
+      REGB2 = TAG_Bool(0);
       REGB1 = REGB2;
     } else {
       REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
@@ -14011,31 +15647,32 @@ 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:910 */
     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) {
+    fra.me.REG[4] = CALL_compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+    if (!once_value_492) {
       fra.me.REG[6] = BOX_NativeString(";\n");
       REGB1 = TAG_Int(2);
       fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-      once_value_479 = fra.me.REG[6];
-      register_static_object(&once_value_479);
-    } else fra.me.REG[6] = once_value_479;
+      once_value_492 = fra.me.REG[6];
+      register_static_object(&once_value_492);
+    } else fra.me.REG[6] = once_value_492;
     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]);
+    CALL_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:911 */
     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:912 */
       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 */
-      CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+      /* compiling/compiling_icode.nit:913 */
+      CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
     }
   }
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___IIntValue___compile_to_c[] = "compiling_icode::IIntValue::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___IIntValue___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -14044,21 +15681,22 @@ 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 = 919;
   fra.me.meth = LOCATE_compiling___compiling_icode___IIntValue___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:895 */
+  /* compiling/compiling_icode.nit:921 */
   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:922 */
   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:923 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("TAG_Int(");
     REGB0 = TAG_Int(8);
@@ -14067,10 +15705,10 @@ void compiling___compiling_icode___IIntValue___compile_to_c(val_t p0, val_t p1){
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
   fra.me.REG[2] = 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]);
+  fra.me.REG[2] = CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   fra.me.REG[0] = CALL_icode___icode_base___IIntValue___value(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]);
-  fra.me.REG[0] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  fra.me.REG[0] = CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
@@ -14079,10 +15717,11 @@ void compiling___compiling_icode___IIntValue___compile_to_c(val_t p0, val_t p1){
     register_static_object(&once_value_2);
   } else fra.me.REG[2] = once_value_2;
   fra.me.REG[2] = fra.me.REG[2];
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___IBoolValue___compile_to_c[] = "compiling_icode::IBoolValue::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___IBoolValue___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -14093,21 +15732,22 @@ 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 = 928;
   fra.me.meth = LOCATE_compiling___compiling_icode___IBoolValue___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:904 */
+  /* 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:905 */
+  /* 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:906 */
+  /* compiling/compiling_icode.nit:932 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("TAG_Bool(");
     REGB0 = TAG_Int(9);
@@ -14116,31 +15756,31 @@ void compiling___compiling_icode___IBoolValue___compile_to_c(val_t p0, val_t p1)
     register_static_object(&once_value_1);
   } 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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* compiling/compiling_icode.nit:933 */
   REGB0 = CALL_icode___icode_base___IBoolValue___value(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
     if (!once_value_2) {
-      fra.me.REG[0] = BOX_NativeString("true");
-      REGB0 = TAG_Int(4);
+      fra.me.REG[0] = BOX_NativeString("1");
+      REGB0 = TAG_Int(1);
       fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
       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]);
+    CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   } else {
     if (!once_value_3) {
-      fra.me.REG[0] = BOX_NativeString("false");
-      REGB0 = TAG_Int(5);
+      fra.me.REG[0] = BOX_NativeString("0");
+      REGB0 = TAG_Int(1);
       fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
       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]);
+    CALL_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:934 */
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
@@ -14149,10 +15789,11 @@ void compiling___compiling_icode___IBoolValue___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_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___ICharValue___compile_to_c[] = "compiling_icode::ICharValue::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___ICharValue___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -14161,21 +15802,22 @@ 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 = 939;
   fra.me.meth = LOCATE_compiling___compiling_icode___ICharValue___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:915 */
+  /* compiling/compiling_icode.nit:941 */
   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:942 */
   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:943 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("TAG_Char(");
     REGB0 = TAG_Int(9);
@@ -14184,9 +15826,9 @@ void compiling___compiling_icode___ICharValue___compile_to_c(val_t p0, val_t p1)
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
   fra.me.REG[2] = 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]);
+  fra.me.REG[2] = CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   fra.me.REG[0] = CALL_icode___icode_base___ICharValue___value(fra.me.REG[0])(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]);
+  fra.me.REG[0] = CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
@@ -14195,10 +15837,11 @@ void compiling___compiling_icode___ICharValue___compile_to_c(val_t p0, val_t p1)
     register_static_object(&once_value_2);
   } else fra.me.REG[2] = once_value_2;
   fra.me.REG[2] = fra.me.REG[2];
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___IFloatValue___compile_to_c[] = "compiling_icode::IFloatValue::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___IFloatValue___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -14207,21 +15850,22 @@ 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 = 948;
   fra.me.meth = LOCATE_compiling___compiling_icode___IFloatValue___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:924 */
+  /* compiling/compiling_icode.nit:950 */
   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:951 */
   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:952 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("BOX_Float(");
     REGB0 = TAG_Int(10);
@@ -14230,9 +15874,9 @@ void compiling___compiling_icode___IFloatValue___compile_to_c(val_t p0, val_t p1
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
   fra.me.REG[2] = 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]);
+  fra.me.REG[2] = CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   fra.me.REG[0] = CALL_icode___icode_base___IFloatValue___value(fra.me.REG[0])(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]);
+  fra.me.REG[0] = CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
@@ -14241,10 +15885,11 @@ void compiling___compiling_icode___IFloatValue___compile_to_c(val_t p0, val_t p1
     register_static_object(&once_value_2);
   } else fra.me.REG[2] = once_value_2;
   fra.me.REG[2] = fra.me.REG[2];
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___IStringValue___compile_to_c[] = "compiling_icode::IStringValue::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___IStringValue___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -14253,21 +15898,22 @@ 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 = 957;
   fra.me.meth = LOCATE_compiling___compiling_icode___IStringValue___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:933 */
+  /* compiling/compiling_icode.nit:959 */
   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:960 */
   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:961 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("BOX_NativeString(\"");
     REGB0 = TAG_Int(18);
@@ -14276,9 +15922,9 @@ void compiling___compiling_icode___IStringValue___compile_to_c(val_t p0, val_t p
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
   fra.me.REG[2] = 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]);
+  fra.me.REG[2] = CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   fra.me.REG[0] = CALL_icode___icode_base___IStringValue___value(fra.me.REG[0])(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]);
+  fra.me.REG[0] = CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString("\")");
     REGB0 = TAG_Int(2);
@@ -14287,10 +15933,11 @@ void compiling___compiling_icode___IStringValue___compile_to_c(val_t p0, val_t p
     register_static_object(&once_value_2);
   } else fra.me.REG[2] = once_value_2;
   fra.me.REG[2] = fra.me.REG[2];
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___IAbort___compile_to_c[] = "compiling_icode::IAbort::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -14307,21 +15954,22 @@ 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 = 966;
   fra.me.meth = LOCATE_compiling___compiling_icode___IAbort___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:942 */
+  /* compiling/compiling_icode.nit:968 */
   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:969 */
   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:970 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("nit_abort(\"");
     REGB0 = TAG_Int(11);
@@ -14330,62 +15978,77 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
     register_static_object(&once_value_1);
   } 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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* compiling/compiling_icode.nit:971 */
   fra.me.REG[2] = CALL_icode___icode_base___IAbort___texts(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit: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:236 */
   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:235 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ./../lib/standard//collection//array.nit:245 */
-    REGB2 = TAG_Bool(false);
+    /* ../lib/standard/collection/array.nit:280 */
+    REGB2 = TAG_Bool(0);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 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:724 */
   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 */
-  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:971 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* compiling/compiling_icode.nit:972 */
   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:972 */
   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:237 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ./compiling//compiling_icode.nit:946 */
+  /* compiling/compiling_icode.nit:972 */
   if (UNTAG_Bool(REGB1)) {
-    /* ./compiling//compiling_icode.nit:947 */
+    /* compiling/compiling_icode.nit:973 */
     if (!once_value_3) {
       fra.me.REG[2] = BOX_NativeString("\", \"");
       REGB1 = TAG_Int(4);
@@ -14394,47 +16057,57 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
       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]);
-    /* ./compiling//compiling_icode.nit:948 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    /* compiling/compiling_icode.nit:974 */
     fra.me.REG[2] = CALL_icode___icode_base___IAbort___texts(fra.me.REG[0])(fra.me.REG[0]);
     REGB1 = TAG_Int(1);
-    /* ./../lib/standard//collection//array.nit: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:236 */
     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:235 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
     } else {
-      /* ./../lib/standard//collection//array.nit:245 */
-      REGB2 = TAG_Bool(false);
+      /* ../lib/standard/collection/array.nit:280 */
+      REGB2 = TAG_Bool(0);
       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:724 */
     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 */
-    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:974 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    /* compiling/compiling_icode.nit:975 */
     if (!once_value_5) {
       fra.me.REG[2] = BOX_NativeString("\"");
       REGB1 = TAG_Int(1);
@@ -14443,9 +16116,9 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
       register_static_object(&once_value_5);
     } else fra.me.REG[2] = once_value_5;
     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]);
+    CALL_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:977 */
     if (!once_value_6) {
       fra.me.REG[2] = BOX_NativeString("\", NULL");
       REGB1 = TAG_Int(7);
@@ -14454,9 +16127,9 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
       register_static_object(&once_value_6);
     } else fra.me.REG[2] = once_value_6;
     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]);
+    CALL_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:979 */
   if (!once_value_7) {
     fra.me.REG[2] = BOX_NativeString(", LOCATE_");
     REGB1 = TAG_Int(9);
@@ -14465,20 +16138,20 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
     register_static_object(&once_value_7);
   } 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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* compiling/compiling_icode.nit:980 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* compiling/compiling_icode.nit:981 */
   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:982 */
   REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      REGB0 = TAG_Bool(false);
+      REGB0 = TAG_Bool(0);
       REGB1 = REGB0;
     } else {
       REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
@@ -14487,7 +16160,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:983 */
     if (!once_value_8) {
       fra.me.REG[2] = BOX_NativeString(", ");
       REGB1 = TAG_Int(2);
@@ -14496,17 +16169,17 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
       register_static_object(&once_value_8);
     } 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 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    /* compiling/compiling_icode.nit:984 */
     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, 984);
     }
     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]);
+    CALL_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:986 */
     if (!once_value_9) {
       fra.me.REG[0] = BOX_NativeString(", 0");
       REGB1 = TAG_Int(3);
@@ -14515,9 +16188,9 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
       register_static_object(&once_value_9);
     } else fra.me.REG[0] = once_value_9;
     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]);
+    CALL_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:988 */
   if (!once_value_10) {
     fra.me.REG[0] = BOX_NativeString(");\n");
     REGB1 = TAG_Int(3);
@@ -14526,12 +16199,13 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
     register_static_object(&once_value_10);
   } else fra.me.REG[0] = once_value_10;
   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]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___IMove___compile_to_c[] = "compiling_icode::IMove::(compiling_icode::ICode::compile_to_c)";
 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,76 +16213,81 @@ 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 = 993;
   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.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_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:993 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* compiling/compiling_icode.nit:995 */
+  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:996 */
+  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:997 */
+  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, 997);
   }
-  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:998 */
+  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:999 */
+  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:1000 */
   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:1001 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* compiling/compiling_icode.nit:1002 */
   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];
-  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 */
+  } else fra.me.REG[4] = once_value_2;
+  fra.me.REG[4] = fra.me.REG[4];
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* compiling/compiling_icode.nit:1003 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:1004 */
   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_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;
 }
+static const char LOCATE_compiling___compiling_icode___IAttrRead___compile_to_c[] = "compiling_icode::IAttrRead::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___IAttrRead___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -14617,33 +16296,34 @@ 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 = 1009;
   fra.me.meth = LOCATE_compiling___compiling_icode___IAttrRead___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:985 */
+  /* compiling/compiling_icode.nit:1011 */
   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:1012 */
   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:1013 */
   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:1014 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:1015 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
@@ -14652,12 +16332,12 @@ void compiling___compiling_icode___IAttrRead___compile_to_c(val_t p0, val_t p1){
     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[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:990 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:1016 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:1017 */
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
@@ -14666,11 +16346,12 @@ void compiling___compiling_icode___IAttrRead___compile_to_c(val_t p0, val_t p1){
     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[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___IAttrIsset___compile_to_c[] = "compiling_icode::IAttrIsset::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___IAttrIsset___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -14680,28 +16361,29 @@ 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 = 1022;
   fra.me.meth = LOCATE_compiling___compiling_icode___IAttrIsset___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:998 */
+  /* compiling/compiling_icode.nit:1024 */
   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:1025 */
   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:1026 */
   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:1027 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("TAG_Bool(");
     REGB0 = TAG_Int(9);
@@ -14710,13 +16392,13 @@ void compiling___compiling_icode___IAttrIsset___compile_to_c(val_t p0, val_t p1)
     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[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1002 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:1028 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:1029 */
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
@@ -14725,12 +16407,12 @@ void compiling___compiling_icode___IAttrIsset___compile_to_c(val_t p0, val_t p1)
     register_static_object(&once_value_3);
   } 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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:1030 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:1031 */
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString(")!=NIT_NULL)");
     REGB0 = TAG_Int(12);
@@ -14739,11 +16421,12 @@ void compiling___compiling_icode___IAttrIsset___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_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___IAttrWrite___compile_to_c[] = "compiling_icode::IAttrWrite::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___IAttrWrite___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -14753,27 +16436,28 @@ 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 = 1036;
   fra.me.meth = LOCATE_compiling___compiling_icode___IAttrWrite___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:1012 */
+  /* compiling/compiling_icode.nit:1038 */
   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:1039 */
   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:1040 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:1041 */
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
@@ -14782,12 +16466,12 @@ void compiling___compiling_icode___IAttrWrite___compile_to_c(val_t p0, val_t p1)
     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[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1016 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:1042 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:1043 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString(") = ");
     REGB0 = TAG_Int(4);
@@ -14796,12 +16480,12 @@ void compiling___compiling_icode___IAttrWrite___compile_to_c(val_t p0, val_t p1)
     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[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1018 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:1044 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:1045 */
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
@@ -14810,10 +16494,11 @@ void compiling___compiling_icode___IAttrWrite___compile_to_c(val_t p0, val_t p1)
     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[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char 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){
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
@@ -14825,17 +16510,27 @@ 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 = 1050;
   fra.me.meth = LOCATE_compiling___compiling_icode___ITypeCheck___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -14844,25 +16539,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:1052 */
   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:1053 */
   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:1054 */
+  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:1055 */
+  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:1056 */
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("TAG_Bool(");
     REGB0 = TAG_Int(9);
@@ -14871,17 +16562,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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  /* compiling/compiling_icode.nit:1057 */
+  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:1058 */
     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:1059 */
       if (!once_value_3) {
         fra.me.REG[4] = BOX_NativeString("(");
         REGB0 = TAG_Int(1);
@@ -14890,10 +16581,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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+      /* compiling/compiling_icode.nit:1060 */
+      CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+      /* compiling/compiling_icode.nit:1061 */
       if (!once_value_4) {
         fra.me.REG[4] = BOX_NativeString("==NIT_NULL) || ");
         REGB0 = TAG_Int(15);
@@ -14902,12 +16593,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_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:1062 */
       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 +16607,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:1063 */
+        CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+        /* compiling/compiling_icode.nit:1064 */
         if (!once_value_5) {
           fra.me.REG[5] = BOX_NativeString("!=NIT_NULL)");
           REGB0 = TAG_Int(11);
@@ -14927,11 +16618,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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+        /* compiling/compiling_icode.nit:1065 */
         goto label1;
       } else {
-        /* ./compiling//compiling_icode.nit:1043 */
+        /* compiling/compiling_icode.nit:1067 */
         if (!once_value_6) {
           fra.me.REG[5] = BOX_NativeString("(");
           REGB0 = TAG_Int(1);
@@ -14940,10 +16631,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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+        /* compiling/compiling_icode.nit:1068 */
+        CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+        /* compiling/compiling_icode.nit:1069 */
         if (!once_value_7) {
           fra.me.REG[5] = BOX_NativeString("!=NIT_NULL) && ");
           REGB0 = TAG_Int(15);
@@ -14952,76 +16643,197 @@ 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_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:1073 */
+  fra.me.REG[5] = CALL_icode___icode_base___ITypeCheck___stype(fra.me.REG[0])(fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:1074 */
+  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:1075 */
+    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:1076 */
+    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:1077 */
+    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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    /* compiling/compiling_icode.nit:1078 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+    /* compiling/compiling_icode.nit:1079 */
+    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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    /* compiling/compiling_icode.nit:1080 */
+    fra.me.REG[4] = CALL_compiling___compiling_base___MMGlobalProperty___vt_class_color(fra.me.REG[1])(fra.me.REG[1]);
+    CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    /* compiling/compiling_icode.nit:1081 */
+    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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    /* compiling/compiling_icode.nit:1082 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    /* compiling/compiling_icode.nit:1083 */
+    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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    /* compiling/compiling_icode.nit:1084 */
+    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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    /* compiling/compiling_icode.nit:1085 */
+    fra.me.REG[1] = CALL_compiling___compiling_base___MMGlobalProperty___vt_class_id(fra.me.REG[1])(fra.me.REG[1]);
+    CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    /* compiling/compiling_icode.nit:1086 */
+    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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    /* compiling/compiling_icode.nit:1087 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    /* compiling/compiling_icode.nit:1088 */
+    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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    /* compiling/compiling_icode.nit:1089 */
+    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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    /* compiling/compiling_icode.nit:1090 */
+    fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+    CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    /* compiling/compiling_icode.nit:1091 */
+    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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  } else {
+    /* compiling/compiling_icode.nit:1093 */
+    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:1094 */
+    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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    /* compiling/compiling_icode.nit:1095 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+    /* compiling/compiling_icode.nit:1096 */
+    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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+    /* compiling/compiling_icode.nit:1097 */
+    fra.me.REG[2] = CALL_compiling___compiling_base___MMGlobalClass___color_id(fra.me.REG[0])(fra.me.REG[0]);
+    CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+    /* compiling/compiling_icode.nit:1098 */
+    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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+    /* compiling/compiling_icode.nit:1099 */
+    fra.me.REG[0] = CALL_compiling___compiling_base___MMGlobalClass___id_id(fra.me.REG[0])(fra.me.REG[0]);
+    CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    /* compiling/compiling_icode.nit:1100 */
+    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_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    /* compiling/compiling_icode.nit:1101 */
+    fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+    CALL_compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+    /* compiling/compiling_icode.nit:1102 */
+    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_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;
 }
+static const char 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){
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
@@ -15042,10 +16854,11 @@ 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 = 1108;
   fra.me.meth = LOCATE_compiling___compiling_icode___IIs___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -15054,18 +16867,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:1110 */
   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:1111 */
   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:1112 */
   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:1113 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("TAG_Bool(");
     REGB0 = TAG_Int(9);
@@ -15074,20 +16887,20 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
     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[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1067 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:1114 */
   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:1115 */
   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:1116 */
   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:1117 */
     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:1118 */
       if (!once_value_3) {
         fra.me.REG[5] = BOX_NativeString("1)");
         REGB0 = TAG_Int(2);
@@ -15096,18 +16909,18 @@ void compiling___compiling_icode___IIs___compile_to_c(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_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-      /* ./compiling//compiling_icode.nit:1072 */
+      CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+      /* compiling/compiling_icode.nit:1119 */
       goto label1;
     } else {
-      /* ./compiling//compiling_icode.nit:1073 */
+      /* compiling/compiling_icode.nit:1120 */
       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:1121 */
         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 */
+        CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+        /* compiling/compiling_icode.nit:1122 */
         if (!once_value_4) {
           fra.me.REG[5] = BOX_NativeString("==NIT_NULL)");
           REGB0 = TAG_Int(11);
@@ -15116,11 +16929,11 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
           register_static_object(&once_value_4);
         } 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 */
+        CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+        /* compiling/compiling_icode.nit:1123 */
         goto label1;
       } else {
-        /* ./compiling//compiling_icode.nit:1078 */
+        /* compiling/compiling_icode.nit:1125 */
         if (!once_value_5) {
           fra.me.REG[5] = BOX_NativeString("0)");
           REGB0 = TAG_Int(2);
@@ -15129,23 +16942,23 @@ void compiling___compiling_icode___IIs___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[2])(fra.me.REG[2], fra.me.REG[5]);
-        /* ./compiling//compiling_icode.nit:1079 */
+        CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+        /* compiling/compiling_icode.nit:1126 */
         goto label1;
       }
     }
   } else {
-    /* ./compiling//compiling_icode.nit:1081 */
+    /* compiling/compiling_icode.nit:1128 */
     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:1129 */
       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:1130 */
         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 */
+        CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+        /* compiling/compiling_icode.nit:1131 */
         if (!once_value_6) {
           fra.me.REG[3] = BOX_NativeString("==NIT_NULL)");
           REGB0 = TAG_Int(11);
@@ -15154,14 +16967,14 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
           register_static_object(&once_value_6);
         } 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 */
+        CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+        /* compiling/compiling_icode.nit:1132 */
         goto label1;
       } else {
-        /* ./compiling//compiling_icode.nit:1086 */
+        /* compiling/compiling_icode.nit:1133 */
         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:1134 */
           if (!once_value_7) {
             fra.me.REG[3] = BOX_NativeString("IS_EQUAL_NN(");
             REGB0 = TAG_Int(12);
@@ -15170,9 +16983,9 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
             register_static_object(&once_value_7);
           } else fra.me.REG[3] = once_value_7;
           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]);
+          CALL_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:1136 */
           if (!once_value_8) {
             fra.me.REG[3] = BOX_NativeString("IS_EQUAL_ON(");
             REGB0 = TAG_Int(12);
@@ -15181,12 +16994,12 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
             register_static_object(&once_value_8);
           } 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 */
+          CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+          /* compiling/compiling_icode.nit:1137 */
           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 */
+          CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+          /* compiling/compiling_icode.nit:1138 */
           if (!once_value_9) {
             fra.me.REG[3] = BOX_NativeString(",");
             REGB0 = TAG_Int(1);
@@ -15195,12 +17008,12 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
             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[2])(fra.me.REG[2], fra.me.REG[3]);
-          /* ./compiling//compiling_icode.nit:1092 */
+          CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+          /* compiling/compiling_icode.nit:1139 */
           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 */
+          CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+          /* compiling/compiling_icode.nit:1140 */
           if (!once_value_10) {
             fra.me.REG[3] = BOX_NativeString("))");
             REGB0 = TAG_Int(2);
@@ -15209,16 +17022,16 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
             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[2])(fra.me.REG[2], fra.me.REG[3]);
-          /* ./compiling//compiling_icode.nit:1094 */
+          CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+          /* compiling/compiling_icode.nit:1141 */
           goto label1;
         }
       }
     } else {
-      /* ./compiling//compiling_icode.nit:1097 */
+      /* compiling/compiling_icode.nit:1144 */
       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:1145 */
         if (!once_value_11) {
           fra.me.REG[3] = BOX_NativeString("0)");
           REGB0 = TAG_Int(2);
@@ -15227,14 +17040,14 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
           register_static_object(&once_value_11);
         } 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 */
+        CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+        /* compiling/compiling_icode.nit:1146 */
         goto label1;
       } else {
-        /* ./compiling//compiling_icode.nit:1100 */
+        /* compiling/compiling_icode.nit:1147 */
         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:1148 */
           if (!once_value_12) {
             fra.me.REG[4] = BOX_NativeString("IS_EQUAL_ON(");
             REGB0 = TAG_Int(12);
@@ -15243,9 +17056,9 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
             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[2])(fra.me.REG[2], fra.me.REG[4]);
+          CALL_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:1150 */
           if (!once_value_13) {
             fra.me.REG[4] = BOX_NativeString("IS_EQUAL_OO(");
             REGB0 = TAG_Int(12);
@@ -15254,16 +17067,16 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
             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_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+          CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
         }
       }
     }
   }
-  /* ./compiling//compiling_icode.nit:1106 */
+  /* compiling/compiling_icode.nit:1153 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  /* compiling/compiling_icode.nit:1154 */
   if (!once_value_14) {
     fra.me.REG[4] = BOX_NativeString(",");
     REGB0 = TAG_Int(1);
@@ -15272,12 +17085,12 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
     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_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* ./compiling//compiling_icode.nit:1108 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  /* compiling/compiling_icode.nit:1155 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:1156 */
   if (!once_value_15) {
     fra.me.REG[0] = BOX_NativeString("))");
     REGB0 = TAG_Int(2);
@@ -15286,11 +17099,12 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
     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[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___INot___compile_to_c[] = "compiling_icode::INot::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___INot___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -15299,28 +17113,29 @@ 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 = 1161;
   fra.me.meth = LOCATE_compiling___compiling_icode___INot___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:1116 */
+  /* compiling/compiling_icode.nit:1163 */
   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:1164 */
   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:1165 */
   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:1166 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("TAG_Bool(!UNTAG_Bool(");
     REGB0 = TAG_Int(21);
@@ -15329,12 +17144,12 @@ void compiling___compiling_icode___INot___compile_to_c(val_t p0, val_t p1){
     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[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1120 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:1167 */
   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 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  /* compiling/compiling_icode.nit:1168 */
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("))");
     REGB0 = TAG_Int(2);
@@ -15343,11 +17158,12 @@ void compiling___compiling_icode___INot___compile_to_c(val_t p0, val_t p1){
     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[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___IOnce___compile_to_c[] = "compiling_icode::IOnce::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
@@ -15374,10 +17190,11 @@ 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 = 1173;
   fra.me.meth = LOCATE_compiling___compiling_icode___IOnce___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -15386,25 +17203,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:1173 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* compiling/compiling_icode.nit:1175 */
+  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:1176 */
   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:1177 */
+  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, 1177);
   }
-  /* ./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:1178 */
+  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:1179 */
     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 +17232,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 +17243,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 +17254,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:1180 */
     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 +17268,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 +17279,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:1183 */
     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 +17294,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 +17305,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:1184 */
     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 +17319,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 +17330,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:1186 */
   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:1187 */
+  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:1188 */
+  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:1189 */
   REGB1 = TAG_Int(5);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_10) {
@@ -15545,7 +17364,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 +17376,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:1190 */
   REGB1 = TAG_Int(3);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_13) {
@@ -15582,12 +17401,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:1191 */
+  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 +17415,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 +17426,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:1192 */
   CALL_compiling___compiling_icode___I2CCompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1146 */
+  /* compiling/compiling_icode.nit:1193 */
   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 +17443,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 +17453,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,16 +17464,17 @@ 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:1194 */
+  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:1195 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___IClosCall___compile_to_c[] = "compiling_icode::IClosCall::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
@@ -15676,10 +17496,11 @@ 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 = 1200;
   fra.me.meth = LOCATE_compiling___compiling_icode___IClosCall___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -15689,13 +17510,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:1202 */
   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:1205 */
   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:1206 */
     REGB0 = TAG_Int(3);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -15721,7 +17542,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:1207 */
     REGB0 = TAG_Int(1);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_3) {
@@ -15734,7 +17555,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:1209 */
     REGB0 = TAG_Int(3);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_4) {
@@ -15761,7 +17582,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:1210 */
     REGB0 = TAG_Int(1);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_6) {
@@ -15775,11 +17596,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:1212 */
   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:1214 */
   REGB0 = TAG_Int(7);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_7) {
@@ -15834,13 +17655,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 */
-  fra.me.REG[2] = NEW_Writer_compiling___compiling_writer___Writer___init();
-  /* ./compiling//compiling_icode.nit:1169 */
-  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:1215 */
+  fra.me.REG[2] = NEW_Writer_compiling_writer___Writer___init();
+  /* compiling/compiling_icode.nit:1216 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:1217 */
   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:1220 */
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_12) {
@@ -15865,17 +17686,17 @@ 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:1221 */
   CALL_compiling___compiling_icode___I2CCompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1175 */
+  /* compiling/compiling_icode.nit:1222 */
   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:1223 */
   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);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
@@ -15884,20 +17705,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:1224 */
     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, 1224);
     }
     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:1226 */
   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:1227 */
   CALL_compiling___compiling_icode___I2CCompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1181 */
+  /* compiling/compiling_icode.nit:1228 */
   if (!once_value_14) {
     fra.me.REG[0] = BOX_NativeString("}");
     REGB0 = TAG_Int(1);
@@ -15910,6 +17731,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___IHasClos___compile_to_c[] = "compiling_icode::IHasClos::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___IHasClos___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
@@ -15922,10 +17744,11 @@ 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 = 1233;
   fra.me.meth = LOCATE_compiling___compiling_icode___IHasClos___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -15933,18 +17756,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:1235 */
   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:1236 */
   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:1237 */
   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:1238 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("TAG_Bool(");
     REGB0 = TAG_Int(9);
@@ -15953,11 +17776,11 @@ void compiling___compiling_icode___IHasClos___compile_to_c(val_t p0, val_t p1){
     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[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1192 */
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* compiling/compiling_icode.nit:1239 */
   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:1240 */
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("closctx->closure_funs[");
       REGB0 = TAG_Int(22);
@@ -15966,13 +17789,13 @@ void compiling___compiling_icode___IHasClos___compile_to_c(val_t p0, val_t p1){
       register_static_object(&once_value_3);
     } 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 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+    /* compiling/compiling_icode.nit:1241 */
     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 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+    /* compiling/compiling_icode.nit:1242 */
     if (!once_value_4) {
       fra.me.REG[4] = BOX_NativeString("]");
       REGB0 = TAG_Int(1);
@@ -15981,9 +17804,9 @@ void compiling___compiling_icode___IHasClos___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[2])(fra.me.REG[2], fra.me.REG[4]);
+    CALL_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:1244 */
     if (!once_value_5) {
       fra.me.REG[4] = BOX_NativeString("CREG[");
       REGB0 = TAG_Int(5);
@@ -15992,13 +17815,13 @@ void compiling___compiling_icode___IHasClos___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_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-    /* ./compiling//compiling_icode.nit:1198 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+    /* compiling/compiling_icode.nit:1245 */
     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 */
+    CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    /* compiling/compiling_icode.nit:1246 */
     if (!once_value_6) {
       fra.me.REG[0] = BOX_NativeString("]");
       REGB0 = TAG_Int(1);
@@ -16007,9 +17830,9 @@ void compiling___compiling_icode___IHasClos___compile_to_c(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_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_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:1248 */
   if (!once_value_7) {
     fra.me.REG[0] = BOX_NativeString(" != NULL)");
     REGB0 = TAG_Int(9);
@@ -16018,11 +17841,12 @@ void compiling___compiling_icode___IHasClos___compile_to_c(val_t p0, val_t p1){
     register_static_object(&once_value_7);
   } else fra.me.REG[0] = once_value_7;
   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]);
+  CALL_compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_compiling___compiling_icode___IClosureDef___compile_closure[] = "compiling_icode::IClosureDef::compile_closure";
 val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
   val_t REGB0;
@@ -16041,10 +17865,11 @@ 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 = 1253;
   fra.me.meth = LOCATE_compiling___compiling_icode___IClosureDef___compile_closure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -16056,31 +17881,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:1257 */
   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:1260 */
   REGB0 = CALL_compiling___compiling_icode___I2CCompilerVisitor___closure(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1214 */
-  REGB1 = TAG_Bool(true);
+  /* compiling/compiling_icode.nit:1261 */
+  REGB1 = TAG_Bool(1);
   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:1264 */
   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:1265 */
   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:1268 */
   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:1269 */
   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:1270 */
   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]);
+  fra.me.REG[6] = CALL_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:1271 */
   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]);
+  fra.me.REG[6] = CALL_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:1274 */
   REGB1 = TAG_Int(5);
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_1) {
@@ -16116,7 +17941,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:1275 */
   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,19 +17952,19 @@ 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:1276 */
   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]);
+  fra.me.REG[7] = CALL_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:1278 */
   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:1279 */
   REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
     REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      REGB2 = TAG_Bool(false);
+      REGB2 = TAG_Bool(0);
       REGB1 = REGB2;
     } else {
       REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
@@ -16147,7 +17972,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:1280 */
     if (!once_value_5) {
       fra.me.REG[0] = BOX_NativeString("return;");
       REGB1 = TAG_Int(7);
@@ -16158,7 +17983,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:1282 */
     REGB1 = TAG_Int(3);
     fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
     if (!once_value_6) {
@@ -16183,9 +18008,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:1284 */
   CALL_compiling___compiling_icode___I2CCompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1238 */
+  /* compiling/compiling_icode.nit:1285 */
   if (!once_value_8) {
     fra.me.REG[0] = BOX_NativeString("}");
     REGB1 = TAG_Int(1);
@@ -16195,15 +18020,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:1288 */
   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:1289 */
   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:1290 */
   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:1291 */
   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:1292 */
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_9) {