bench/lang: add covar/depthnot and fts_nesting
[nit.git] / c_src / icode___icode_base._sep.c
index 0369898..db0fc01 100644 (file)
@@ -1,5 +1,6 @@
 /* This C file is generated by NIT to compile module icode___icode_base. */
 #include "icode___icode_base._sep.h"
+static const char LOCATE_icode___icode_base___IRegister___stype[] = "icode_base::IRegister::stype";
 val_t icode___icode_base___IRegister___stype(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -10,9 +11,10 @@ val_t icode___icode_base___IRegister___stype(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___IRegister___stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:26 */
+  /* icode/icode_base.nit:26 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IRegister____stype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -22,6 +24,7 @@ val_t icode___icode_base___IRegister___stype(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IRegister___init[] = "icode_base::IRegister::init";
 void icode___icode_base___IRegister___init(val_t p0, val_t p1, int* init_table){
   int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IRegister].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -33,16 +36,18 @@ void icode___icode_base___IRegister___init(val_t p0, val_t p1, int* init_table){
   fra.me.meth = LOCATE_icode___icode_base___IRegister___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:30 */
+  /* icode/icode_base.nit:30 */
   ATTR_icode___icode_base___IRegister____stype(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IEscapeMark___init[] = "icode_base::IEscapeMark::init";
 void icode___icode_base___IEscapeMark___init(val_t p0, int* init_table){
   int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IEscapeMark].i;
   struct {struct stack_frame_t me;} fra;
@@ -54,10 +59,12 @@ void icode___icode_base___IEscapeMark___init(val_t p0, int* init_table){
   fra.me.meth = LOCATE_icode___icode_base___IEscapeMark___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IClosureDecl___closure[] = "icode_base::IClosureDecl::closure";
 val_t icode___icode_base___IClosureDecl___closure(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -68,9 +75,10 @@ val_t icode___icode_base___IClosureDecl___closure(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___IClosureDecl___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;
-  /* ./icode//icode_base.nit:40 */
+  /* icode/icode_base.nit:40 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IClosureDecl____closure(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -80,6 +88,7 @@ val_t icode___icode_base___IClosureDecl___closure(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IClosureDecl___default[] = "icode_base::IClosureDecl::default";
 val_t icode___icode_base___IClosureDecl___default(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -89,13 +98,15 @@ val_t icode___icode_base___IClosureDecl___default(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___IClosureDecl___default;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:43 */
+  /* icode/icode_base.nit:43 */
   fra.me.REG[0] = ATTR_icode___icode_base___IClosureDecl____default(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IClosureDecl___default__eq[] = "icode_base::IClosureDecl::default=";
 void icode___icode_base___IClosureDecl___default__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -105,15 +116,17 @@ void icode___icode_base___IClosureDecl___default__eq(val_t p0, val_t p1){
   fra.me.meth = LOCATE_icode___icode_base___IClosureDecl___default__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:43 */
+  /* icode/icode_base.nit:43 */
   ATTR_icode___icode_base___IClosureDecl____default(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_icode___icode_base___IClosureDecl___init[] = "icode_base::IClosureDecl::init";
 void icode___icode_base___IClosureDecl___init(val_t p0, val_t p1, int* init_table){
   int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IClosureDecl].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -125,16 +138,18 @@ void icode___icode_base___IClosureDecl___init(val_t p0, val_t p1, int* init_tabl
   fra.me.meth = LOCATE_icode___icode_base___IClosureDecl___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:46 */
+  /* icode/icode_base.nit:46 */
   ATTR_icode___icode_base___IClosureDecl____closure(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos2] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IRoutine___params[] = "icode_base::IRoutine::params";
 val_t icode___icode_base___IRoutine___params(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -145,9 +160,10 @@ val_t icode___icode_base___IRoutine___params(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___params;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:51 */
+  /* icode/icode_base.nit:51 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IRoutine____params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -157,6 +173,7 @@ val_t icode___icode_base___IRoutine___params(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IRoutine___closure_decls[] = "icode_base::IRoutine::closure_decls";
 val_t icode___icode_base___IRoutine___closure_decls(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -166,13 +183,15 @@ val_t icode___icode_base___IRoutine___closure_decls(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___closure_decls;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:54 */
+  /* icode/icode_base.nit:54 */
   fra.me.REG[0] = ATTR_icode___icode_base___IRoutine____closure_decls(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IRoutine___closure_decls__eq[] = "icode_base::IRoutine::closure_decls=";
 void icode___icode_base___IRoutine___closure_decls__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -182,15 +201,17 @@ void icode___icode_base___IRoutine___closure_decls__eq(val_t p0, val_t p1){
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___closure_decls__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:54 */
+  /* icode/icode_base.nit:54 */
   ATTR_icode___icode_base___IRoutine____closure_decls(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_icode___icode_base___IRoutine___registers[] = "icode_base::IRoutine::registers";
 val_t icode___icode_base___IRoutine___registers(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -201,9 +222,10 @@ val_t icode___icode_base___IRoutine___registers(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___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.REG[0] = p0;
-  /* ./icode//icode_base.nit:57 */
+  /* icode/icode_base.nit:57 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IRoutine____registers(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -213,6 +235,7 @@ val_t icode___icode_base___IRoutine___registers(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IRoutine___result[] = "icode_base::IRoutine::result";
 val_t icode___icode_base___IRoutine___result(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -222,13 +245,15 @@ val_t icode___icode_base___IRoutine___result(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___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;
-  /* ./icode//icode_base.nit:60 */
+  /* icode/icode_base.nit:60 */
   fra.me.REG[0] = ATTR_icode___icode_base___IRoutine____result(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IRoutine___escape_marks[] = "icode_base::IRoutine::escape_marks";
 val_t icode___icode_base___IRoutine___escape_marks(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -239,9 +264,10 @@ val_t icode___icode_base___IRoutine___escape_marks(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___escape_marks;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:63 */
+  /* icode/icode_base.nit:63 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IRoutine____escape_marks(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -251,6 +277,7 @@ val_t icode___icode_base___IRoutine___escape_marks(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IRoutine___body[] = "icode_base::IRoutine::body";
 val_t icode___icode_base___IRoutine___body(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -261,9 +288,10 @@ val_t icode___icode_base___IRoutine___body(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___body;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:66 */
+  /* icode/icode_base.nit:66 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IRoutine____body(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -273,6 +301,7 @@ val_t icode___icode_base___IRoutine___body(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IRoutine___location[] = "icode_base::IRoutine::location";
 val_t icode___icode_base___IRoutine___location(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -282,13 +311,15 @@ val_t icode___icode_base___IRoutine___location(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___location;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:69 */
+  /* icode/icode_base.nit:69 */
   fra.me.REG[0] = ATTR_icode___icode_base___IRoutine____location(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IRoutine___location__eq[] = "icode_base::IRoutine::location=";
 void icode___icode_base___IRoutine___location__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -298,15 +329,17 @@ void icode___icode_base___IRoutine___location__eq(val_t p0, val_t p1){
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___location__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:69 */
+  /* icode/icode_base.nit:69 */
   ATTR_icode___icode_base___IRoutine____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_icode___icode_base___IRoutine___init[] = "icode_base::IRoutine::init";
 void icode___icode_base___IRoutine___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IRoutine].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
@@ -318,21 +351,23 @@ void icode___icode_base___IRoutine___init(val_t p0, val_t p1, val_t p2, int* ini
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___init;
   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;
-  /* ./icode//icode_base.nit:74 */
+  /* icode/icode_base.nit:74 */
   fra.me.REG[1] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
   ATTR_icode___icode_base___IRoutine____params(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:75 */
+  /* icode/icode_base.nit:75 */
   ATTR_icode___icode_base___IRoutine____result(fra.me.REG[0]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
   init_table[itpos3] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IClosureDef___init[] = "icode_base::IClosureDef::init";
 void icode___icode_base___IClosureDef___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IClosureDef].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
@@ -344,18 +379,20 @@ void icode___icode_base___IClosureDef___init(val_t p0, val_t p1, val_t p2, int*
   fra.me.meth = LOCATE_icode___icode_base___IClosureDef___init;
   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;
-  /* ./icode//icode_base.nit:84 */
+  /* icode/icode_base.nit:84 */
   CALL_icode___icode_base___IRoutine___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos4] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___ICode___arity[] = "icode_base::ICode::arity";
 val_t icode___icode_base___ICode___arity(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -365,11 +402,13 @@ val_t icode___icode_base___ICode___arity(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___ICode___arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./icode//icode_base.nit:92 */
+  fra.me.nitni_local_ref_head = NULL;
+  /* icode/icode_base.nit:92 */
   nit_abort("Deferred method called", NULL, LOCATE_icode___icode_base, 92);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
+static const char LOCATE_icode___icode_base___ICode___result[] = "icode_base::ICode::result";
 val_t icode___icode_base___ICode___result(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -379,13 +418,15 @@ val_t icode___icode_base___ICode___result(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___ICode___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;
-  /* ./icode//icode_base.nit:95 */
+  /* icode/icode_base.nit:95 */
   fra.me.REG[0] = ATTR_icode___icode_base___ICode____result(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___ICode___result__eq[] = "icode_base::ICode::result=";
 void icode___icode_base___ICode___result__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -395,15 +436,17 @@ void icode___icode_base___ICode___result__eq(val_t p0, val_t p1){
   fra.me.meth = LOCATE_icode___icode_base___ICode___result__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:95 */
+  /* icode/icode_base.nit:95 */
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_icode___icode_base___ICode___location[] = "icode_base::ICode::location";
 val_t icode___icode_base___ICode___location(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -413,13 +456,15 @@ val_t icode___icode_base___ICode___location(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___ICode___location;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:98 */
+  /* icode/icode_base.nit:98 */
   fra.me.REG[0] = ATTR_icode___icode_base___ICode____location(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___ICode___location__eq[] = "icode_base::ICode::location=";
 void icode___icode_base___ICode___location__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -429,15 +474,17 @@ void icode___icode_base___ICode___location__eq(val_t p0, val_t p1){
   fra.me.meth = LOCATE_icode___icode_base___ICode___location__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:98 */
+  /* icode/icode_base.nit:98 */
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_icode___icode_base___ICode___is_pure[] = "icode_base::ICode::is_pure";
 val_t icode___icode_base___ICode___is_pure(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -448,15 +495,17 @@ val_t icode___icode_base___ICode___is_pure(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___ICode___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:102 */
-  REGB0 = TAG_Bool(false);
+  /* icode/icode_base.nit:102 */
+  REGB0 = TAG_Bool(0);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___ICode___init[] = "icode_base::ICode::init";
 void icode___icode_base___ICode___init(val_t p0, int* init_table){
   int itpos5 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___ICode].i;
   struct {struct stack_frame_t me;} fra;
@@ -468,10 +517,12 @@ void icode___icode_base___ICode___init(val_t p0, int* init_table){
   fra.me.meth = LOCATE_icode___icode_base___ICode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
   init_table[itpos5] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___ICode0___arity[] = "icode_base::ICode0::(icode_base::ICode::arity)";
 val_t icode___icode_base___ICode0___arity(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -482,15 +533,17 @@ val_t icode___icode_base___ICode0___arity(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___ICode0___arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:108 */
+  /* icode/icode_base.nit:108 */
   REGB0 = TAG_Int(0);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___ICode1___arity[] = "icode_base::ICode1::(icode_base::ICode::arity)";
 val_t icode___icode_base___ICode1___arity(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -501,15 +554,17 @@ val_t icode___icode_base___ICode1___arity(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___ICode1___arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:114 */
+  /* icode/icode_base.nit:114 */
   REGB0 = TAG_Int(1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___ICode1___expr[] = "icode_base::ICode1::expr";
 val_t icode___icode_base___ICode1___expr(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -520,9 +575,10 @@ val_t icode___icode_base___ICode1___expr(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___ICode1___expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:116 */
+  /* icode/icode_base.nit:116 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -532,6 +588,7 @@ val_t icode___icode_base___ICode1___expr(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___ICode1___init[] = "icode_base::ICode1::init";
 void icode___icode_base___ICode1___init(val_t p0, val_t p1, int* init_table){
   int itpos6 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___ICode1].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
@@ -543,12 +600,13 @@ void icode___icode_base___ICode1___init(val_t p0, val_t p1, int* init_table){
   fra.me.meth = LOCATE_icode___icode_base___ICode1___init;
   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;
-  /* ./icode//icode_base.nit:119 */
+  /* icode/icode_base.nit:119 */
   fra.me.REG[2] = fra.me.REG[0];
   CALL_icode___icode_base___ICode___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_icode___icode_base___ICode1____expr(fra.me.REG[2]) = fra.me.REG[1];
@@ -556,6 +614,7 @@ void icode___icode_base___ICode1___init(val_t p0, val_t p1, int* init_table){
   init_table[itpos6] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___ICode2___arity[] = "icode_base::ICode2::(icode_base::ICode::arity)";
 val_t icode___icode_base___ICode2___arity(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -566,15 +625,17 @@ val_t icode___icode_base___ICode2___arity(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___ICode2___arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:125 */
+  /* icode/icode_base.nit:125 */
   REGB0 = TAG_Int(2);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___ICode2___expr1[] = "icode_base::ICode2::expr1";
 val_t icode___icode_base___ICode2___expr1(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -585,9 +646,10 @@ val_t icode___icode_base___ICode2___expr1(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___ICode2___expr1;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:127 */
+  /* icode/icode_base.nit:127 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode2____expr1(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -597,6 +659,7 @@ val_t icode___icode_base___ICode2___expr1(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___ICode2___expr2[] = "icode_base::ICode2::expr2";
 val_t icode___icode_base___ICode2___expr2(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -607,9 +670,10 @@ val_t icode___icode_base___ICode2___expr2(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___ICode2___expr2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:130 */
+  /* icode/icode_base.nit:130 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode2____expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -619,6 +683,7 @@ val_t icode___icode_base___ICode2___expr2(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___ICode2___init[] = "icode_base::ICode2::init";
 void icode___icode_base___ICode2___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos7 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___ICode2].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -630,6 +695,7 @@ void icode___icode_base___ICode2___init(val_t p0, val_t p1, val_t p2, int* init_
   fra.me.meth = LOCATE_icode___icode_base___ICode2___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;
@@ -637,17 +703,18 @@ void icode___icode_base___ICode2___init(val_t p0, val_t p1, val_t p2, int* init_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:133 */
+  /* icode/icode_base.nit:133 */
   fra.me.REG[3] = fra.me.REG[0];
   CALL_icode___icode_base___ICode___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./icode//icode_base.nit:135 */
+  /* icode/icode_base.nit:135 */
   ATTR_icode___icode_base___ICode2____expr1(fra.me.REG[3]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:136 */
+  /* icode/icode_base.nit:136 */
   ATTR_icode___icode_base___ICode2____expr2(fra.me.REG[3]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
   init_table[itpos7] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___ICodeN___arity[] = "icode_base::ICodeN::(icode_base::ICode::arity)";
 val_t icode___icode_base___ICodeN___arity(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -658,9 +725,10 @@ val_t icode___icode_base___ICodeN___arity(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___ICodeN___arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:143 */
+  /* icode/icode_base.nit:143 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -673,6 +741,7 @@ val_t icode___icode_base___ICodeN___arity(val_t p0){
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___ICodeN___exprs[] = "icode_base::ICodeN::exprs";
 val_t icode___icode_base___ICodeN___exprs(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -683,9 +752,10 @@ val_t icode___icode_base___ICodeN___exprs(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___ICodeN___exprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:145 */
+  /* icode/icode_base.nit:145 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -695,6 +765,7 @@ val_t icode___icode_base___ICodeN___exprs(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___ICodeN___closure_defs[] = "icode_base::ICodeN::closure_defs";
 val_t icode___icode_base___ICodeN___closure_defs(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -704,13 +775,15 @@ val_t icode___icode_base___ICodeN___closure_defs(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___ICodeN___closure_defs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:148 */
+  /* icode/icode_base.nit:148 */
   fra.me.REG[0] = ATTR_icode___icode_base___ICodeN____closure_defs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___ICodeN___closure_defs__eq[] = "icode_base::ICodeN::closure_defs=";
 void icode___icode_base___ICodeN___closure_defs__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -720,15 +793,17 @@ void icode___icode_base___ICodeN___closure_defs__eq(val_t p0, val_t p1){
   fra.me.meth = LOCATE_icode___icode_base___ICodeN___closure_defs__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:148 */
+  /* icode/icode_base.nit:148 */
   ATTR_icode___icode_base___ICodeN____closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_icode___icode_base___ICodeN___init[] = "icode_base::ICodeN::init";
 void icode___icode_base___ICodeN___init(val_t p0, val_t p1, int* init_table){
   int itpos8 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___ICodeN].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
@@ -742,21 +817,22 @@ void icode___icode_base___ICodeN___init(val_t p0, val_t p1, int* init_table){
   fra.me.meth = LOCATE_icode___icode_base___ICodeN___init;
   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;
-  /* ./icode//icode_base.nit:151 */
+  /* icode/icode_base.nit:151 */
   fra.me.REG[2] = fra.me.REG[0];
   CALL_icode___icode_base___ICode___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./icode//icode_base.nit:153 */
+  /* icode/icode_base.nit:153 */
   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 {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
@@ -764,17 +840,18 @@ void icode___icode_base___ICodeN___init(val_t p0, val_t p1, int* init_table){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./icode//icode_base.nit:154 */
+    /* icode/icode_base.nit:154 */
     fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
     ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[2]) = fra.me.REG[0];
   } else {
-    /* ./icode//icode_base.nit:156 */
+    /* icode/icode_base.nit:156 */
     ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[2]) = fra.me.REG[1];
   }
   stack_frame_head = fra.me.prev;
   init_table[itpos8] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___ISeq___icodes[] = "icode_base::ISeq::icodes";
 val_t icode___icode_base___ISeq___icodes(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -785,9 +862,10 @@ val_t icode___icode_base___ISeq___icodes(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___ISeq___icodes;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:166 */
+  /* icode/icode_base.nit:166 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ISeq____icodes(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -797,6 +875,7 @@ val_t icode___icode_base___ISeq___icodes(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___ISeq___iescape_mark[] = "icode_base::ISeq::iescape_mark";
 val_t icode___icode_base___ISeq___iescape_mark(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -806,13 +885,15 @@ val_t icode___icode_base___ISeq___iescape_mark(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___ISeq___iescape_mark;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:169 */
+  /* icode/icode_base.nit:169 */
   fra.me.REG[0] = ATTR_icode___icode_base___ISeq____iescape_mark(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___ISeq___iescape_mark__eq[] = "icode_base::ISeq::iescape_mark=";
 void icode___icode_base___ISeq___iescape_mark__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -822,15 +903,17 @@ void icode___icode_base___ISeq___iescape_mark__eq(val_t p0, val_t p1){
   fra.me.meth = LOCATE_icode___icode_base___ISeq___iescape_mark__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:169 */
+  /* icode/icode_base.nit:169 */
   ATTR_icode___icode_base___ISeq____iescape_mark(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_icode___icode_base___ISeq___init[] = "icode_base::ISeq::init";
 void icode___icode_base___ISeq___init(val_t p0, int* init_table){
   int itpos9 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___ISeq].i;
   struct {struct stack_frame_t me;} fra;
@@ -842,12 +925,14 @@ void icode___icode_base___ISeq___init(val_t p0, int* init_table){
   fra.me.meth = LOCATE_icode___icode_base___ISeq___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
   init_table[itpos9] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___ILoop___init[] = "icode_base::ILoop::init";
 void icode___icode_base___ILoop___init(val_t p0, int* init_table){
   int itpos10 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___ILoop].i;
   struct {struct stack_frame_t me;} fra;
@@ -859,14 +944,16 @@ void icode___icode_base___ILoop___init(val_t p0, int* init_table){
   fra.me.meth = LOCATE_icode___icode_base___ILoop___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:179 */
+  /* icode/icode_base.nit:179 */
   CALL_icode___icode_base___ISeq___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos10] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IIf___then_seq[] = "icode_base::IIf::then_seq";
 val_t icode___icode_base___IIf___then_seq(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -877,9 +964,10 @@ val_t icode___icode_base___IIf___then_seq(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___IIf___then_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;
-  /* ./icode//icode_base.nit:186 */
+  /* icode/icode_base.nit:186 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IIf____then_seq(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -889,6 +977,7 @@ val_t icode___icode_base___IIf___then_seq(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IIf___else_seq[] = "icode_base::IIf::else_seq";
 val_t icode___icode_base___IIf___else_seq(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -899,9 +988,10 @@ val_t icode___icode_base___IIf___else_seq(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___IIf___else_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;
-  /* ./icode//icode_base.nit:188 */
+  /* icode/icode_base.nit:188 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IIf____else_seq(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -911,6 +1001,7 @@ val_t icode___icode_base___IIf___else_seq(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IIf___init[] = "icode_base::IIf::init";
 void icode___icode_base___IIf___init(val_t p0, val_t p1, int* init_table){
   int itpos11 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IIf].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -922,16 +1013,18 @@ void icode___icode_base___IIf___init(val_t p0, val_t p1, int* init_table){
   fra.me.meth = LOCATE_icode___icode_base___IIf___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:190 */
+  /* icode/icode_base.nit:190 */
   CALL_icode___icode_base___ICode1___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos11] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IEscape___iescape_mark[] = "icode_base::IEscape::iescape_mark";
 val_t icode___icode_base___IEscape___iescape_mark(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -942,9 +1035,10 @@ val_t icode___icode_base___IEscape___iescape_mark(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___IEscape___iescape_mark;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:196 */
+  /* icode/icode_base.nit:196 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IEscape____iescape_mark(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -954,6 +1048,7 @@ val_t icode___icode_base___IEscape___iescape_mark(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IEscape___init[] = "icode_base::IEscape::init";
 void icode___icode_base___IEscape___init(val_t p0, val_t p1, int* init_table){
   int itpos12 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IEscape].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -965,16 +1060,18 @@ void icode___icode_base___IEscape___init(val_t p0, val_t p1, int* init_table){
   fra.me.meth = LOCATE_icode___icode_base___IEscape___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:199 */
+  /* icode/icode_base.nit:199 */
   ATTR_icode___icode_base___IEscape____iescape_mark(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos12] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IAbort___texts[] = "icode_base::IAbort::texts";
 val_t icode___icode_base___IAbort___texts(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -985,9 +1082,10 @@ val_t icode___icode_base___IAbort___texts(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___IAbort___texts;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:205 */
+  /* icode/icode_base.nit:205 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IAbort____texts(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -997,6 +1095,7 @@ val_t icode___icode_base___IAbort___texts(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IAbort___module_location[] = "icode_base::IAbort::module_location";
 val_t icode___icode_base___IAbort___module_location(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -1007,9 +1106,10 @@ val_t icode___icode_base___IAbort___module_location(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___IAbort___module_location;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:208 */
+  /* icode/icode_base.nit:208 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IAbort____module_location(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1019,6 +1119,7 @@ val_t icode___icode_base___IAbort___module_location(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IAbort___init[] = "icode_base::IAbort::init";
 void icode___icode_base___IAbort___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos13 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IAbort].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
@@ -1030,20 +1131,22 @@ void icode___icode_base___IAbort___init(val_t p0, val_t p1, val_t p2, int* init_
   fra.me.meth = LOCATE_icode___icode_base___IAbort___init;
   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;
-  /* ./icode//icode_base.nit:212 */
+  /* icode/icode_base.nit:212 */
   ATTR_icode___icode_base___IAbort____texts(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:213 */
+  /* icode/icode_base.nit:213 */
   ATTR_icode___icode_base___IAbort____module_location(fra.me.REG[0]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
   init_table[itpos13] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IAbsCall___property[] = "icode_base::IAbsCall::property";
 val_t icode___icode_base___IAbsCall___property(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -1054,9 +1157,10 @@ val_t icode___icode_base___IAbsCall___property(val_t p0){
   fra.me.meth = LOCATE_icode___icode_base___IAbsCall___property;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:222 */
+  /* icode/icode_base.nit:222 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IAbsCall____property(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1066,6 +1170,51 @@ val_t icode___icode_base___IAbsCall___property(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IAbsCall___is_explicit_from_extern[] = "icode_base::IAbsCall::is_explicit_from_extern";
+val_t icode___icode_base___IAbsCall___is_explicit_from_extern(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_icode___icode_base;
+  fra.me.line = 225;
+  fra.me.meth = LOCATE_icode___icode_base___IAbsCall___is_explicit_from_extern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* icode/icode_base.nit:225 */
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@is_explicit_from_extern", LOCATE_icode___icode_base, 225);
+  }
+  REGB0 = ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_icode___icode_base___IAbsCall___is_explicit_from_extern__eq[] = "icode_base::IAbsCall::is_explicit_from_extern=";
+void icode___icode_base___IAbsCall___is_explicit_from_extern__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_icode___icode_base;
+  fra.me.line = 225;
+  fra.me.meth = LOCATE_icode___icode_base___IAbsCall___is_explicit_from_extern__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* icode/icode_base.nit:225 */
+  ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_icode___icode_base___IAbsCall___init[] = "icode_base::IAbsCall::init";
 void icode___icode_base___IAbsCall___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos14 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IAbsCall].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -1073,10 +1222,11 @@ void icode___icode_base___IAbsCall___init(val_t p0, val_t p1, val_t p2, int* ini
   if (init_table[itpos14]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 225;
+  fra.me.line = 228;
   fra.me.meth = LOCATE_icode___icode_base___IAbsCall___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;
@@ -1084,16 +1234,17 @@ void icode___icode_base___IAbsCall___init(val_t p0, val_t p1, val_t p2, int* ini
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:225 */
+  /* icode/icode_base.nit:228 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* ./icode//icode_base.nit:227 */
+  /* icode/icode_base.nit:230 */
   CALL_icode___icode_base___ICodeN___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], init_table);
-  /* ./icode//icode_base.nit:228 */
+  /* icode/icode_base.nit:231 */
   ATTR_icode___icode_base___IAbsCall____property(fra.me.REG[3]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos14] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___ICall___init[] = "icode_base::ICall::init";
 void icode___icode_base___ICall___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos15 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___ICall].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
@@ -1101,22 +1252,24 @@ void icode___icode_base___ICall___init(val_t p0, val_t p1, val_t p2, int* init_t
   if (init_table[itpos15]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 236;
+  fra.me.line = 239;
   fra.me.meth = LOCATE_icode___icode_base___ICall___init;
   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;
-  /* ./icode//icode_base.nit:236 */
+  /* icode/icode_base.nit:239 */
   CALL_icode___icode_base___IAbsCall___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos15] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___ISuper___init[] = "icode_base::ISuper::init";
 void icode___icode_base___ISuper___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos16 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___ISuper].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
@@ -1124,44 +1277,48 @@ void icode___icode_base___ISuper___init(val_t p0, val_t p1, val_t p2, int* init_
   if (init_table[itpos16]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 243;
+  fra.me.line = 246;
   fra.me.meth = LOCATE_icode___icode_base___ISuper___init;
   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;
-  /* ./icode//icode_base.nit:243 */
+  /* icode/icode_base.nit:246 */
   CALL_icode___icode_base___IAbsCall___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos16] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___INew___stype[] = "icode_base::INew::stype";
 val_t icode___icode_base___INew___stype(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 255;
+  fra.me.line = 258;
   fra.me.meth = LOCATE_icode___icode_base___INew___stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:255 */
+  /* icode/icode_base.nit:258 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___INew____stype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 255);
+    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 258);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___INew____stype(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___INew___init[] = "icode_base::INew::init";
 void icode___icode_base___INew___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos17 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___INew].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
@@ -1169,10 +1326,11 @@ void icode___icode_base___INew___init(val_t p0, val_t p1, val_t p2, val_t p3, in
   if (init_table[itpos17]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 257;
+  fra.me.line = 260;
   fra.me.meth = LOCATE_icode___icode_base___INew___init;
   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;
@@ -1182,38 +1340,41 @@ void icode___icode_base___INew___init(val_t p0, val_t p1, val_t p2, val_t p3, in
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./icode//icode_base.nit:257 */
+  /* icode/icode_base.nit:260 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* ./icode//icode_base.nit:259 */
+  /* icode/icode_base.nit:262 */
   CALL_icode___icode_base___IAbsCall___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3], init_table);
-  /* ./icode//icode_base.nit:260 */
+  /* icode/icode_base.nit:263 */
   ATTR_icode___icode_base___INew____stype(fra.me.REG[4]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos17] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IAllocateInstance___stype[] = "icode_base::IAllocateInstance::stype";
 val_t icode___icode_base___IAllocateInstance___stype(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 269;
+  fra.me.line = 272;
   fra.me.meth = LOCATE_icode___icode_base___IAllocateInstance___stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:269 */
+  /* icode/icode_base.nit:272 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IAllocateInstance____stype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 269);
+    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 272);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IAllocateInstance____stype(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IAllocateInstance___init[] = "icode_base::IAllocateInstance::init";
 void icode___icode_base___IAllocateInstance___init(val_t p0, val_t p1, int* init_table){
   int itpos18 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IAllocateInstance].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -1221,20 +1382,22 @@ void icode___icode_base___IAllocateInstance___init(val_t p0, val_t p1, int* init
   if (init_table[itpos18]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 271;
+  fra.me.line = 274;
   fra.me.meth = LOCATE_icode___icode_base___IAllocateInstance___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:273 */
+  /* icode/icode_base.nit:276 */
   ATTR_icode___icode_base___IAllocateInstance____stype(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos18] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IStaticCall___init[] = "icode_base::IStaticCall::init";
 void icode___icode_base___IStaticCall___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos19 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IStaticCall].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
@@ -1242,44 +1405,48 @@ void icode___icode_base___IStaticCall___init(val_t p0, val_t p1, val_t p2, int*
   if (init_table[itpos19]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 280;
+  fra.me.line = 283;
   fra.me.meth = LOCATE_icode___icode_base___IStaticCall___init;
   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;
-  /* ./icode//icode_base.nit:280 */
+  /* icode/icode_base.nit:283 */
   CALL_icode___icode_base___IAbsCall___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos19] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___ICheckInstance___stype[] = "icode_base::ICheckInstance::stype";
 val_t icode___icode_base___ICheckInstance___stype(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 286;
+  fra.me.line = 289;
   fra.me.meth = LOCATE_icode___icode_base___ICheckInstance___stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:286 */
+  /* icode/icode_base.nit:289 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICheckInstance____stype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 286);
+    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 289);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___ICheckInstance____stype(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___ICheckInstance___init[] = "icode_base::ICheckInstance::init";
 void icode___icode_base___ICheckInstance___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos20 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___ICheckInstance].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -1287,10 +1454,11 @@ void icode___icode_base___ICheckInstance___init(val_t p0, val_t p1, val_t p2, in
   if (init_table[itpos20]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 288;
+  fra.me.line = 291;
   fra.me.meth = LOCATE_icode___icode_base___ICheckInstance___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;
@@ -1298,38 +1466,41 @@ void icode___icode_base___ICheckInstance___init(val_t p0, val_t p1, val_t p2, in
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:288 */
+  /* icode/icode_base.nit:291 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* ./icode//icode_base.nit:290 */
+  /* icode/icode_base.nit:293 */
   CALL_icode___icode_base___ICode1___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], init_table);
-  /* ./icode//icode_base.nit:291 */
+  /* icode/icode_base.nit:294 */
   ATTR_icode___icode_base___ICheckInstance____stype(fra.me.REG[3]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos20] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IInitAttributes___stype[] = "icode_base::IInitAttributes::stype";
 val_t icode___icode_base___IInitAttributes___stype(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 298;
+  fra.me.line = 301;
   fra.me.meth = LOCATE_icode___icode_base___IInitAttributes___stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:298 */
+  /* icode/icode_base.nit:301 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IInitAttributes____stype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 298);
+    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 301);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IInitAttributes____stype(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IInitAttributes___init[] = "icode_base::IInitAttributes::init";
 void icode___icode_base___IInitAttributes___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos21 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IInitAttributes].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -1337,10 +1508,11 @@ void icode___icode_base___IInitAttributes___init(val_t p0, val_t p1, val_t p2, i
   if (init_table[itpos21]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 300;
+  fra.me.line = 303;
   fra.me.meth = LOCATE_icode___icode_base___IInitAttributes___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;
@@ -1348,72 +1520,79 @@ void icode___icode_base___IInitAttributes___init(val_t p0, val_t p1, val_t p2, i
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:300 */
+  /* icode/icode_base.nit:303 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* ./icode//icode_base.nit:302 */
+  /* icode/icode_base.nit:305 */
   CALL_icode___icode_base___ICode1___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], init_table);
-  /* ./icode//icode_base.nit:303 */
+  /* icode/icode_base.nit:306 */
   ATTR_icode___icode_base___IInitAttributes____stype(fra.me.REG[3]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos21] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IClosCall___closure_decl[] = "icode_base::IClosCall::closure_decl";
 val_t icode___icode_base___IClosCall___closure_decl(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 311;
+  fra.me.line = 314;
   fra.me.meth = LOCATE_icode___icode_base___IClosCall___closure_decl;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:311 */
+  /* icode/icode_base.nit:314 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IClosCall____closure_decl(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closure_decl", LOCATE_icode___icode_base, 311);
+    nit_abort("Uninitialized attribute %s", "_closure_decl", LOCATE_icode___icode_base, 314);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IClosCall____closure_decl(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IClosCall___break_seq[] = "icode_base::IClosCall::break_seq";
 val_t icode___icode_base___IClosCall___break_seq(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_icode___icode_base;
-  fra.me.line = 314;
+  fra.me.line = 317;
   fra.me.meth = LOCATE_icode___icode_base___IClosCall___break_seq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:314 */
+  /* icode/icode_base.nit:317 */
   fra.me.REG[0] = ATTR_icode___icode_base___IClosCall____break_seq(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IClosCall___break_seq__eq[] = "icode_base::IClosCall::break_seq=";
 void icode___icode_base___IClosCall___break_seq__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 314;
+  fra.me.line = 317;
   fra.me.meth = LOCATE_icode___icode_base___IClosCall___break_seq__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:314 */
+  /* icode/icode_base.nit:317 */
   ATTR_icode___icode_base___IClosCall____break_seq(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_icode___icode_base___IClosCall___init[] = "icode_base::IClosCall::init";
 void icode___icode_base___IClosCall___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos22 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IClosCall].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -1421,10 +1600,11 @@ void icode___icode_base___IClosCall___init(val_t p0, val_t p1, val_t p2, int* in
   if (init_table[itpos22]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 317;
+  fra.me.line = 320;
   fra.me.meth = LOCATE_icode___icode_base___IClosCall___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;
@@ -1432,38 +1612,41 @@ void icode___icode_base___IClosCall___init(val_t p0, val_t p1, val_t p2, int* in
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:317 */
+  /* icode/icode_base.nit:320 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* ./icode//icode_base.nit:319 */
+  /* icode/icode_base.nit:322 */
   CALL_icode___icode_base___ICodeN___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], init_table);
-  /* ./icode//icode_base.nit:320 */
+  /* icode/icode_base.nit:323 */
   ATTR_icode___icode_base___IClosCall____closure_decl(fra.me.REG[3]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos22] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___INative___method[] = "icode_base::INative::method";
 val_t icode___icode_base___INative___method(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 329;
+  fra.me.line = 332;
   fra.me.meth = LOCATE_icode___icode_base___INative___method;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:329 */
+  /* icode/icode_base.nit:332 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___INative____method(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_method", LOCATE_icode___icode_base, 329);
+    nit_abort("Uninitialized attribute %s", "_method", LOCATE_icode___icode_base, 332);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___INative____method(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___INative___init[] = "icode_base::INative::init";
 void icode___icode_base___INative___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos23 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___INative].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
@@ -1474,10 +1657,11 @@ void icode___icode_base___INative___init(val_t p0, val_t p1, val_t p2, int* init
   if (init_table[itpos23]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 332;
+  fra.me.line = 335;
   fra.me.meth = LOCATE_icode___icode_base___INative___init;
   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;
@@ -1486,106 +1670,113 @@ void icode___icode_base___INative___init(val_t p0, val_t p1, val_t p2, int* init
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:332 */
+  /* icode/icode_base.nit:335 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* ./icode//icode_base.nit:335 */
+  /* icode/icode_base.nit:338 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_icode___icode_base, 335);
+    nit_abort("Reciever is null", NULL, LOCATE_icode___icode_base, 338);
   }
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
   REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_icode___icode_base, 335);
+    nit_abort("Reciever is null", NULL, LOCATE_icode___icode_base, 338);
   }
   REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
   REGB2 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ../lib/standard/kernel.nit:238 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-  /* ./icode//icode_base.nit:335 */
+  /* icode/icode_base.nit:338 */
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ../lib/standard/kernel.nit:230 */
     REGB2 = TAG_Bool((REGB0)==(REGB2));
-    /* ./icode//icode_base.nit:335 */
+    /* icode/icode_base.nit:338 */
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_icode___icode_base, 335);
+    nit_abort("Assert failed", NULL, LOCATE_icode___icode_base, 338);
   }
-  /* ./icode//icode_base.nit:337 */
+  /* icode/icode_base.nit:340 */
   CALL_icode___icode_base___ICodeN___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], init_table);
-  /* ./icode//icode_base.nit:338 */
+  /* icode/icode_base.nit:341 */
   ATTR_icode___icode_base___INative____method(fra.me.REG[3]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos23] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___INative___is_pure[] = "icode_base::INative::(icode_base::ICode::is_pure)";
 val_t icode___icode_base___INative___is_pure(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 341;
+  fra.me.line = 344;
   fra.me.meth = LOCATE_icode___icode_base___INative___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:341 */
+  /* icode/icode_base.nit:344 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___INative____is_pure(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_pure", LOCATE_icode___icode_base, 341);
+    nit_abort("Uninitialized attribute %s", "_is_pure", LOCATE_icode___icode_base, 344);
   }
   REGB0 = ATTR_icode___icode_base___INative____is_pure(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___INative___is_pure__eq[] = "icode_base::INative::is_pure=";
 void icode___icode_base___INative___is_pure__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 341;
+  fra.me.line = 344;
   fra.me.meth = LOCATE_icode___icode_base___INative___is_pure__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./icode//icode_base.nit:341 */
+  /* icode/icode_base.nit:344 */
   ATTR_icode___icode_base___INative____is_pure(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_icode___icode_base___IIntValue___value[] = "icode_base::IIntValue::value";
 val_t icode___icode_base___IIntValue___value(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 347;
+  fra.me.line = 350;
   fra.me.meth = LOCATE_icode___icode_base___IIntValue___value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:347 */
+  /* icode/icode_base.nit:350 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IIntValue____value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 347);
+    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 350);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IIntValue____value(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IIntValue___init[] = "icode_base::IIntValue::init";
 void icode___icode_base___IIntValue___init(val_t p0, val_t p1, int* init_table){
   int itpos24 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IIntValue].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -1593,61 +1784,67 @@ void icode___icode_base___IIntValue___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos24]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 350;
+  fra.me.line = 353;
   fra.me.meth = LOCATE_icode___icode_base___IIntValue___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:350 */
+  /* icode/icode_base.nit:353 */
   ATTR_icode___icode_base___IIntValue____value(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos24] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IIntValue___is_pure[] = "icode_base::IIntValue::(icode_base::ICode::is_pure)";
 val_t icode___icode_base___IIntValue___is_pure(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 352;
+  fra.me.line = 355;
   fra.me.meth = LOCATE_icode___icode_base___IIntValue___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:352 */
-  REGB0 = TAG_Bool(true);
+  /* icode/icode_base.nit:355 */
+  REGB0 = TAG_Bool(1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___IBoolValue___value[] = "icode_base::IBoolValue::value";
 val_t icode___icode_base___IBoolValue___value(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 358;
+  fra.me.line = 361;
   fra.me.meth = LOCATE_icode___icode_base___IBoolValue___value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:358 */
+  /* icode/icode_base.nit:361 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IBoolValue____value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 358);
+    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 361);
   }
   REGB0 = ATTR_icode___icode_base___IBoolValue____value(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___IBoolValue___init[] = "icode_base::IBoolValue::init";
 void icode___icode_base___IBoolValue___init(val_t p0, val_t p1, int* init_table){
   int itpos25 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IBoolValue].i;
   struct {struct stack_frame_t me;} fra;
@@ -1656,60 +1853,66 @@ void icode___icode_base___IBoolValue___init(val_t p0, val_t p1, int* init_table)
   if (init_table[itpos25]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 361;
+  fra.me.line = 364;
   fra.me.meth = LOCATE_icode___icode_base___IBoolValue___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./icode//icode_base.nit:361 */
+  /* icode/icode_base.nit:364 */
   ATTR_icode___icode_base___IBoolValue____value(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   init_table[itpos25] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IBoolValue___is_pure[] = "icode_base::IBoolValue::(icode_base::ICode::is_pure)";
 val_t icode___icode_base___IBoolValue___is_pure(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 363;
+  fra.me.line = 366;
   fra.me.meth = LOCATE_icode___icode_base___IBoolValue___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:363 */
-  REGB0 = TAG_Bool(true);
+  /* icode/icode_base.nit:366 */
+  REGB0 = TAG_Bool(1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___IStringValue___value[] = "icode_base::IStringValue::value";
 val_t icode___icode_base___IStringValue___value(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 369;
+  fra.me.line = 372;
   fra.me.meth = LOCATE_icode___icode_base___IStringValue___value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:369 */
+  /* icode/icode_base.nit:372 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IStringValue____value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 369);
+    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 372);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IStringValue____value(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IStringValue___init[] = "icode_base::IStringValue::init";
 void icode___icode_base___IStringValue___init(val_t p0, val_t p1, int* init_table){
   int itpos26 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IStringValue].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -1717,61 +1920,67 @@ void icode___icode_base___IStringValue___init(val_t p0, val_t p1, int* init_tabl
   if (init_table[itpos26]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 372;
+  fra.me.line = 375;
   fra.me.meth = LOCATE_icode___icode_base___IStringValue___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:372 */
+  /* icode/icode_base.nit:375 */
   ATTR_icode___icode_base___IStringValue____value(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos26] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IStringValue___is_pure[] = "icode_base::IStringValue::(icode_base::ICode::is_pure)";
 val_t icode___icode_base___IStringValue___is_pure(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 374;
+  fra.me.line = 377;
   fra.me.meth = LOCATE_icode___icode_base___IStringValue___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:374 */
-  REGB0 = TAG_Bool(true);
+  /* icode/icode_base.nit:377 */
+  REGB0 = TAG_Bool(1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___IFloatValue___value[] = "icode_base::IFloatValue::value";
 val_t icode___icode_base___IFloatValue___value(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 380;
+  fra.me.line = 383;
   fra.me.meth = LOCATE_icode___icode_base___IFloatValue___value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:380 */
+  /* icode/icode_base.nit:383 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IFloatValue____value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 380);
+    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 383);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IFloatValue____value(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IFloatValue___init[] = "icode_base::IFloatValue::init";
 void icode___icode_base___IFloatValue___init(val_t p0, val_t p1, int* init_table){
   int itpos27 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IFloatValue].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -1779,61 +1988,67 @@ void icode___icode_base___IFloatValue___init(val_t p0, val_t p1, int* init_table
   if (init_table[itpos27]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 383;
+  fra.me.line = 386;
   fra.me.meth = LOCATE_icode___icode_base___IFloatValue___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:383 */
+  /* icode/icode_base.nit:386 */
   ATTR_icode___icode_base___IFloatValue____value(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos27] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IFloatValue___is_pure[] = "icode_base::IFloatValue::(icode_base::ICode::is_pure)";
 val_t icode___icode_base___IFloatValue___is_pure(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 385;
+  fra.me.line = 388;
   fra.me.meth = LOCATE_icode___icode_base___IFloatValue___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:385 */
-  REGB0 = TAG_Bool(true);
+  /* icode/icode_base.nit:388 */
+  REGB0 = TAG_Bool(1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___ICharValue___value[] = "icode_base::ICharValue::value";
 val_t icode___icode_base___ICharValue___value(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 391;
+  fra.me.line = 394;
   fra.me.meth = LOCATE_icode___icode_base___ICharValue___value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:391 */
+  /* icode/icode_base.nit:394 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICharValue____value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 391);
+    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 394);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___ICharValue____value(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___ICharValue___init[] = "icode_base::ICharValue::init";
 void icode___icode_base___ICharValue___init(val_t p0, val_t p1, int* init_table){
   int itpos28 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___ICharValue].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -1841,39 +2056,43 @@ void icode___icode_base___ICharValue___init(val_t p0, val_t p1, int* init_table)
   if (init_table[itpos28]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 394;
+  fra.me.line = 397;
   fra.me.meth = LOCATE_icode___icode_base___ICharValue___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:394 */
+  /* icode/icode_base.nit:397 */
   ATTR_icode___icode_base___ICharValue____value(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos28] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___ICharValue___is_pure[] = "icode_base::ICharValue::(icode_base::ICode::is_pure)";
 val_t icode___icode_base___ICharValue___is_pure(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 396;
+  fra.me.line = 399;
   fra.me.meth = LOCATE_icode___icode_base___ICharValue___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:396 */
-  REGB0 = TAG_Bool(true);
+  /* icode/icode_base.nit:399 */
+  REGB0 = TAG_Bool(1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___IMove___init[] = "icode_base::IMove::init";
 void icode___icode_base___IMove___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos29 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IMove].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -1881,10 +2100,11 @@ void icode___icode_base___IMove___init(val_t p0, val_t p1, val_t p2, int* init_t
   if (init_table[itpos29]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 404;
+  fra.me.line = 407;
   fra.me.meth = LOCATE_icode___icode_base___IMove___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;
@@ -1892,57 +2112,62 @@ void icode___icode_base___IMove___init(val_t p0, val_t p1, val_t p2, int* init_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:404 */
+  /* icode/icode_base.nit:407 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* ./icode//icode_base.nit:406 */
+  /* icode/icode_base.nit:409 */
   CALL_icode___icode_base___ICode1___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], init_table);
-  /* ./icode//icode_base.nit:407 */
+  /* icode/icode_base.nit:410 */
   ATTR_icode___icode_base___ICode____result(fra.me.REG[3]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos29] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IMove___is_pure[] = "icode_base::IMove::(icode_base::ICode::is_pure)";
 val_t icode___icode_base___IMove___is_pure(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 410;
+  fra.me.line = 413;
   fra.me.meth = LOCATE_icode___icode_base___IMove___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:410 */
-  REGB0 = TAG_Bool(true);
+  /* icode/icode_base.nit:413 */
+  REGB0 = TAG_Bool(1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___IAttrRead___property[] = "icode_base::IAttrRead::property";
 val_t icode___icode_base___IAttrRead___property(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 417;
+  fra.me.line = 420;
   fra.me.meth = LOCATE_icode___icode_base___IAttrRead___property;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:417 */
+  /* icode/icode_base.nit:420 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IAttrRead____property(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_property", LOCATE_icode___icode_base, 417);
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_icode___icode_base, 420);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IAttrRead____property(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IAttrRead___init[] = "icode_base::IAttrRead::init";
 void icode___icode_base___IAttrRead___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos30 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IAttrRead].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -1950,10 +2175,11 @@ void icode___icode_base___IAttrRead___init(val_t p0, val_t p1, val_t p2, int* in
   if (init_table[itpos30]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 420;
+  fra.me.line = 423;
   fra.me.meth = LOCATE_icode___icode_base___IAttrRead___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;
@@ -1961,57 +2187,62 @@ void icode___icode_base___IAttrRead___init(val_t p0, val_t p1, val_t p2, int* in
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:420 */
+  /* icode/icode_base.nit:423 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* ./icode//icode_base.nit:422 */
+  /* icode/icode_base.nit:425 */
   CALL_icode___icode_base___ICode1___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], init_table);
-  /* ./icode//icode_base.nit:423 */
+  /* icode/icode_base.nit:426 */
   ATTR_icode___icode_base___IAttrRead____property(fra.me.REG[3]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos30] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IAttrRead___is_pure[] = "icode_base::IAttrRead::(icode_base::ICode::is_pure)";
 val_t icode___icode_base___IAttrRead___is_pure(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 426;
+  fra.me.line = 429;
   fra.me.meth = LOCATE_icode___icode_base___IAttrRead___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:426 */
-  REGB0 = TAG_Bool(true);
+  /* icode/icode_base.nit:429 */
+  REGB0 = TAG_Bool(1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___IAttrWrite___property[] = "icode_base::IAttrWrite::property";
 val_t icode___icode_base___IAttrWrite___property(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 433;
+  fra.me.line = 436;
   fra.me.meth = LOCATE_icode___icode_base___IAttrWrite___property;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:433 */
+  /* icode/icode_base.nit:436 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IAttrWrite____property(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_property", LOCATE_icode___icode_base, 433);
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_icode___icode_base, 436);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IAttrWrite____property(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IAttrWrite___init[] = "icode_base::IAttrWrite::init";
 void icode___icode_base___IAttrWrite___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos31 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IAttrWrite].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
@@ -2019,10 +2250,11 @@ void icode___icode_base___IAttrWrite___init(val_t p0, val_t p1, val_t p2, val_t
   if (init_table[itpos31]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 436;
+  fra.me.line = 439;
   fra.me.meth = LOCATE_icode___icode_base___IAttrWrite___init;
   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;
@@ -2032,38 +2264,41 @@ void icode___icode_base___IAttrWrite___init(val_t p0, val_t p1, val_t p2, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./icode//icode_base.nit:436 */
+  /* icode/icode_base.nit:439 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* ./icode//icode_base.nit:438 */
+  /* icode/icode_base.nit:441 */
   CALL_icode___icode_base___ICode2___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3], init_table);
-  /* ./icode//icode_base.nit:439 */
+  /* icode/icode_base.nit:442 */
   ATTR_icode___icode_base___IAttrWrite____property(fra.me.REG[4]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos31] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IAttrIsset___property[] = "icode_base::IAttrIsset::property";
 val_t icode___icode_base___IAttrIsset___property(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 448;
+  fra.me.line = 451;
   fra.me.meth = LOCATE_icode___icode_base___IAttrIsset___property;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:448 */
+  /* icode/icode_base.nit:451 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IAttrIsset____property(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_property", LOCATE_icode___icode_base, 448);
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_icode___icode_base, 451);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IAttrIsset____property(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IAttrIsset___init[] = "icode_base::IAttrIsset::init";
 void icode___icode_base___IAttrIsset___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos32 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IAttrIsset].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -2071,10 +2306,11 @@ void icode___icode_base___IAttrIsset___init(val_t p0, val_t p1, val_t p2, int* i
   if (init_table[itpos32]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 451;
+  fra.me.line = 454;
   fra.me.meth = LOCATE_icode___icode_base___IAttrIsset___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;
@@ -2082,57 +2318,62 @@ void icode___icode_base___IAttrIsset___init(val_t p0, val_t p1, val_t p2, int* i
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:451 */
+  /* icode/icode_base.nit:454 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* ./icode//icode_base.nit:453 */
+  /* icode/icode_base.nit:456 */
   CALL_icode___icode_base___ICode1___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], init_table);
-  /* ./icode//icode_base.nit:454 */
+  /* icode/icode_base.nit:457 */
   ATTR_icode___icode_base___IAttrIsset____property(fra.me.REG[3]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos32] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IAttrIsset___is_pure[] = "icode_base::IAttrIsset::(icode_base::ICode::is_pure)";
 val_t icode___icode_base___IAttrIsset___is_pure(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 457;
+  fra.me.line = 460;
   fra.me.meth = LOCATE_icode___icode_base___IAttrIsset___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:457 */
-  REGB0 = TAG_Bool(true);
+  /* icode/icode_base.nit:460 */
+  REGB0 = TAG_Bool(1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___ITypeCheck___stype[] = "icode_base::ITypeCheck::stype";
 val_t icode___icode_base___ITypeCheck___stype(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 465;
+  fra.me.line = 468;
   fra.me.meth = LOCATE_icode___icode_base___ITypeCheck___stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:465 */
+  /* icode/icode_base.nit:468 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ITypeCheck____stype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 465);
+    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 468);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___ITypeCheck____stype(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___ITypeCheck___init[] = "icode_base::ITypeCheck::init";
 void icode___icode_base___ITypeCheck___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos33 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___ITypeCheck].i;
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
@@ -2140,10 +2381,11 @@ void icode___icode_base___ITypeCheck___init(val_t p0, val_t p1, val_t p2, val_t
   if (init_table[itpos33]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 468;
+  fra.me.line = 471;
   fra.me.meth = LOCATE_icode___icode_base___ITypeCheck___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 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;
@@ -2153,35 +2395,38 @@ void icode___icode_base___ITypeCheck___init(val_t p0, val_t p1, val_t p2, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./icode//icode_base.nit:468 */
+  /* icode/icode_base.nit:471 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* ./icode//icode_base.nit:470 */
+  /* icode/icode_base.nit:473 */
   CALL_icode___icode_base___ICode2___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  /* ./icode//icode_base.nit:471 */
+  /* icode/icode_base.nit:474 */
   ATTR_icode___icode_base___ITypeCheck____stype(fra.me.REG[4]) = fra.me.REG[3];
   stack_frame_head = fra.me.prev;
   init_table[itpos33] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___ITypeCheck___is_pure[] = "icode_base::ITypeCheck::(icode_base::ICode::is_pure)";
 val_t icode___icode_base___ITypeCheck___is_pure(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 474;
+  fra.me.line = 477;
   fra.me.meth = LOCATE_icode___icode_base___ITypeCheck___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:474 */
-  REGB0 = TAG_Bool(true);
+  /* icode/icode_base.nit:477 */
+  REGB0 = TAG_Bool(1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___IIs___init[] = "icode_base::IIs::init";
 void icode___icode_base___IIs___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos34 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IIs].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
@@ -2189,41 +2434,45 @@ void icode___icode_base___IIs___init(val_t p0, val_t p1, val_t p2, int* init_tab
   if (init_table[itpos34]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 481;
+  fra.me.line = 484;
   fra.me.meth = LOCATE_icode___icode_base___IIs___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_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;
-  /* ./icode//icode_base.nit:483 */
+  /* icode/icode_base.nit:486 */
   CALL_icode___icode_base___ICode2___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos34] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IIs___is_pure[] = "icode_base::IIs::(icode_base::ICode::is_pure)";
 val_t icode___icode_base___IIs___is_pure(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 486;
+  fra.me.line = 489;
   fra.me.meth = LOCATE_icode___icode_base___IIs___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:486 */
-  REGB0 = TAG_Bool(true);
+  /* icode/icode_base.nit:489 */
+  REGB0 = TAG_Bool(1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___INot___init[] = "icode_base::INot::init";
 void icode___icode_base___INot___init(val_t p0, val_t p1, int* init_table){
   int itpos35 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___INot].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -2231,61 +2480,67 @@ void icode___icode_base___INot___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos35]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 493;
+  fra.me.line = 496;
   fra.me.meth = LOCATE_icode___icode_base___INot___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:495 */
+  /* icode/icode_base.nit:498 */
   CALL_icode___icode_base___ICode1___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos35] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___INot___is_pure[] = "icode_base::INot::(icode_base::ICode::is_pure)";
 val_t icode___icode_base___INot___is_pure(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 498;
+  fra.me.line = 501;
   fra.me.meth = LOCATE_icode___icode_base___INot___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:498 */
-  REGB0 = TAG_Bool(true);
+  /* icode/icode_base.nit:501 */
+  REGB0 = TAG_Bool(1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___IOnce___body[] = "icode_base::IOnce::body";
 val_t icode___icode_base___IOnce___body(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 505;
+  fra.me.line = 508;
   fra.me.meth = LOCATE_icode___icode_base___IOnce___body;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:505 */
+  /* icode/icode_base.nit:508 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IOnce____body(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_body", LOCATE_icode___icode_base, 505);
+    nit_abort("Uninitialized attribute %s", "_body", LOCATE_icode___icode_base, 508);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IOnce____body(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IOnce___init[] = "icode_base::IOnce::init";
 void icode___icode_base___IOnce___init(val_t p0, int* init_table){
   int itpos36 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IOnce].i;
   struct {struct stack_frame_t me;} fra;
@@ -2293,38 +2548,42 @@ void icode___icode_base___IOnce___init(val_t p0, int* init_table){
   if (init_table[itpos36]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 506;
+  fra.me.line = 509;
   fra.me.meth = LOCATE_icode___icode_base___IOnce___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   stack_frame_head = fra.me.prev;
   init_table[itpos36] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IHasClos___closure_decl[] = "icode_base::IHasClos::closure_decl";
 val_t icode___icode_base___IHasClos___closure_decl(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 512;
+  fra.me.line = 515;
   fra.me.meth = LOCATE_icode___icode_base___IHasClos___closure_decl;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:512 */
+  /* icode/icode_base.nit:515 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IHasClos____closure_decl(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closure_decl", LOCATE_icode___icode_base, 512);
+    nit_abort("Uninitialized attribute %s", "_closure_decl", LOCATE_icode___icode_base, 515);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IHasClos____closure_decl(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_icode___icode_base___IHasClos___init[] = "icode_base::IHasClos::init";
 void icode___icode_base___IHasClos___init(val_t p0, val_t p1, int* init_table){
   int itpos37 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IHasClos].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -2332,64 +2591,71 @@ void icode___icode_base___IHasClos___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos37]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 515;
+  fra.me.line = 518;
   fra.me.meth = LOCATE_icode___icode_base___IHasClos___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:517 */
+  /* icode/icode_base.nit:520 */
   ATTR_icode___icode_base___IHasClos____closure_decl(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos37] = 1;
   return;
 }
+static const char LOCATE_icode___icode_base___IHasClos___is_pure[] = "icode_base::IHasClos::(icode_base::ICode::is_pure)";
 val_t icode___icode_base___IHasClos___is_pure(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 520;
+  fra.me.line = 523;
   fra.me.meth = LOCATE_icode___icode_base___IHasClos___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:520 */
-  REGB0 = TAG_Bool(true);
+  /* icode/icode_base.nit:523 */
+  REGB0 = TAG_Bool(1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_icode___icode_base___MMAttribute___iroutine[] = "icode_base::MMAttribute::iroutine";
 val_t icode___icode_base___MMAttribute___iroutine(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_icode___icode_base;
-  fra.me.line = 526;
+  fra.me.line = 529;
   fra.me.meth = LOCATE_icode___icode_base___MMAttribute___iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./icode//icode_base.nit:526 */
-  nit_abort("Deferred method called", NULL, LOCATE_icode___icode_base, 526);
+  fra.me.nitni_local_ref_head = NULL;
+  /* icode/icode_base.nit:529 */
+  nit_abort("Deferred method called", NULL, LOCATE_icode___icode_base, 529);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
+static const char LOCATE_icode___icode_base___MMMethod___iroutine[] = "icode_base::MMMethod::iroutine";
 val_t icode___icode_base___MMMethod___iroutine(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_icode___icode_base;
-  fra.me.line = 532;
+  fra.me.line = 535;
   fra.me.meth = LOCATE_icode___icode_base___MMMethod___iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./icode//icode_base.nit:532 */
-  nit_abort("Deferred method called", NULL, LOCATE_icode___icode_base, 532);
+  fra.me.nitni_local_ref_head = NULL;
+  /* icode/icode_base.nit:535 */
+  nit_abort("Deferred method called", NULL, LOCATE_icode___icode_base, 535);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }