nitg: inline Object::== and Object::!=
[nit.git] / c_src / syntax___mmbuilder._sep.c
index 602bc72..2e07bbf 100644 (file)
@@ -13,10 +13,11 @@ void syntax___mmbuilder___ToolContext___handle_property_conflict(val_t p0, val_t
   static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 25;
+  fra.me.line = 26;
   fra.me.meth = LOCATE_syntax___mmbuilder___ToolContext___handle_property_conflict;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -28,14 +29,14 @@ void syntax___mmbuilder___ToolContext___handle_property_conflict(val_t p0, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:27 */
+  /* syntax/mmbuilder.nit:28 */
   fra.me.REG[3] = NIT_NULL;
-  /* ./syntax//mmbuilder.nit:28 */
+  /* syntax/mmbuilder.nit:29 */
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcLocalClass, ID_syntax___syntax_base___MMSrcLocalClass)) /*cast MMSrcLocalClass*/;
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:29 */
+    /* syntax/mmbuilder.nit:30 */
     fra.me.REG[4] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./syntax//mmbuilder.nit:30 */
+    /* syntax/mmbuilder.nit:31 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -52,33 +53,33 @@ void syntax___mmbuilder___ToolContext___handle_property_conflict(val_t p0, val_t
     if (UNTAG_Bool(REGB0)) {
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 30);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 31);
       }
       CALL_parser___parser_nodes___ANode___location(fra.me.REG[4])(fra.me.REG[4]);
     }
   }
-  /* ./syntax//mmbuilder.nit:33 */
+  /* syntax/mmbuilder.nit:34 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* ./../lib/standard//collection//array.nit:229 */
+  /* ../lib/standard/collection/array.nit:266 */
   fra.me.REG[5] = fra.me.REG[2];
-  /* ./../lib/standard//collection//array.nit:232 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:233 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -86,33 +87,33 @@ void syntax___mmbuilder___ToolContext___handle_property_conflict(val_t p0, val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:35 */
+      /* syntax/mmbuilder.nit:36 */
       fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[7])(fra.me.REG[7]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./syntax//mmbuilder.nit:37 */
+  /* syntax/mmbuilder.nit:38 */
   REGB0 = TAG_Int(7);
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_2) {
@@ -138,7 +139,7 @@ void syntax___mmbuilder___ToolContext___handle_property_conflict(val_t p0, val_t
   fra.me.REG[2] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 37);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 38);
   }
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
@@ -172,7 +173,7 @@ void syntax___mmbuilder___ToolContext___handle_property_conflict(val_t p0, val_t
   fra.me.REG[2] = fra.me.REG[2];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
   fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
-  CALL_mmloader___ToolContext___fatal_error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[6]);
+  CALL_toolcontext___ToolContext___fatal_error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[6]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -183,17 +184,18 @@ val_t syntax___mmbuilder___CSHSorter___compare(val_t p0, val_t p1, val_t p2){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 44;
+  fra.me.line = 45;
   fra.me.meth = LOCATE_syntax___mmbuilder___CSHSorter___compare;
   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;
-  /* ./syntax//mmbuilder.nit:46 */
+  /* syntax/mmbuilder.nit:47 */
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = CALL_metamodel___partial_order___PartialOrderElement___rank(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[2])(fra.me.REG[2]);
@@ -211,14 +213,13 @@ void syntax___mmbuilder___CSHSorter___init(val_t p0, int* init_table){
   if (init_table[itpos0]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 49;
+  fra.me.line = 50;
   fra.me.meth = LOCATE_syntax___mmbuilder___CSHSorter___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;
-  /* ./syntax//mmbuilder.nit:49 */
-  CALL_standard___collection___sorter___AbstractSorter___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
   return;
@@ -232,10 +233,11 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 53;
+  fra.me.line = 54;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcModule___do_mmbuilder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -246,75 +248,75 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:58 */
+  /* syntax/mmbuilder.nit:59 */
   CALL_metamodel___inheritance___MMModule___import_global_classes(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:61 */
+  /* syntax/mmbuilder.nit:62 */
   fra.me.REG[2] = NEW_ClassBuilderVisitor_syntax___mmbuilder___ClassBuilderVisitor___init(fra.me.REG[1], fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:62 */
+  /* syntax/mmbuilder.nit:63 */
   fra.me.REG[3] = CALL_syntax___syntax_base___MMSrcModule___node(fra.me.REG[0])(fra.me.REG[0]);
   CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:63 */
-  CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:65 */
+  /* syntax/mmbuilder.nit:64 */
+  CALL_toolcontext___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
+  /* syntax/mmbuilder.nit:66 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMModule___mhe(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 65);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 66);
   }
   fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:66 */
+    /* syntax/mmbuilder.nit:67 */
     CALL_syntax___mmbuilder___MMSrcModule___process_default_classes(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   }
-  /* ./syntax//mmbuilder.nit:70 */
+  /* syntax/mmbuilder.nit:71 */
   CALL_metamodel___inheritance___MMModule___import_local_classes(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:73 */
+  /* syntax/mmbuilder.nit:74 */
   fra.me.REG[3] = NEW_ClassSpecializationBuilderVisitor_syntax___mmbuilder___ClassSpecializationBuilderVisitor___init(fra.me.REG[1], fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:74 */
+  /* syntax/mmbuilder.nit:75 */
   fra.me.REG[2] = CALL_syntax___syntax_base___MMSrcModule___node(fra.me.REG[0])(fra.me.REG[0]);
   CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:75 */
-  CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:78 */
+  /* syntax/mmbuilder.nit:76 */
+  CALL_toolcontext___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
+  /* syntax/mmbuilder.nit:79 */
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcModule___do_mmbuilder_1));
-  /* ./syntax//mmbuilder.nit:84 */
-  CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:89 */
+  /* syntax/mmbuilder.nit:85 */
+  CALL_toolcontext___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
+  /* syntax/mmbuilder.nit:90 */
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___class_specialization_hierarchy(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:92 */
+  /* syntax/mmbuilder.nit:93 */
   if (!once_value_3) {
     fra.me.REG[3] = NEW_CSHSorter_syntax___mmbuilder___CSHSorter___init();
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
   fra.me.REG[3] = fra.me.REG[3];
-  /* ./syntax//mmbuilder.nit:93 */
+  /* syntax/mmbuilder.nit:94 */
   CALL_standard___collection___sorter___AbstractSorter___sort(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:96 */
+  /* syntax/mmbuilder.nit:97 */
   fra.me.REG[3] = NEW_ClassAncestorBuilder_syntax___mmbuilder___ClassAncestorBuilder___init(fra.me.REG[1], fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:229 */
+  /* ../lib/standard/collection/array.nit:266 */
   fra.me.REG[4] = fra.me.REG[2];
-  /* ./../lib/standard//collection//array.nit:232 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:233 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -322,57 +324,57 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:98 */
+      /* syntax/mmbuilder.nit:99 */
       CALL_syntax___mmbuilder___MMLocalClass___accept_class_visitor(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
-      /* ./syntax//mmbuilder.nit:99 */
-      CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-      /* ./syntax//mmbuilder.nit:100 */
+      /* syntax/mmbuilder.nit:100 */
+      CALL_toolcontext___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
+      /* syntax/mmbuilder.nit:101 */
       CALL_metamodel___inheritance___MMLocalClass___compute_ancestors(fra.me.REG[6])(fra.me.REG[6]);
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label4;
     }
   }
   label4: while(0);
-  /* ./syntax//mmbuilder.nit:104 */
+  /* syntax/mmbuilder.nit:105 */
   fra.me.REG[3] = NEW_ClassVerifierVisitor_syntax___mmbuilder___ClassVerifierVisitor___init(fra.me.REG[1], fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:229 */
+  /* ../lib/standard/collection/array.nit:266 */
   fra.me.REG[5] = fra.me.REG[2];
-  /* ./../lib/standard//collection//array.nit:232 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:233 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -380,55 +382,55 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:106 */
+      /* syntax/mmbuilder.nit:107 */
       CALL_syntax___mmbuilder___MMLocalClass___accept_class_visitor(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label5;
     }
   }
   label5: while(0);
-  /* ./syntax//mmbuilder.nit:108 */
-  CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:111 */
+  /* syntax/mmbuilder.nit:109 */
+  CALL_toolcontext___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
+  /* syntax/mmbuilder.nit:112 */
   fra.me.REG[3] = NEW_PropertyBuilderVisitor_syntax___mmbuilder___PropertyBuilderVisitor___init(fra.me.REG[1], fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:229 */
+  /* ../lib/standard/collection/array.nit:266 */
   fra.me.REG[4] = fra.me.REG[2];
-  /* ./../lib/standard//collection//array.nit:232 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:233 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -436,20 +438,20 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:114 */
+      /* syntax/mmbuilder.nit:115 */
       CALL_syntax___mmbuilder___MMLocalClass___accept_class_visitor(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
-      /* ./syntax//mmbuilder.nit:117 */
+      /* syntax/mmbuilder.nit:118 */
       REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_syntax___syntax_base___MMSrcLocalClass, ID_syntax___syntax_base___MMSrcLocalClass)) /*cast MMSrcLocalClass*/;
       if (UNTAG_Bool(REGB1)) {
         fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
@@ -474,6 +476,14 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
       }
       if (UNTAG_Bool(REGB1)) {
         fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
+        REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[7])(fra.me.REG[7]);
+        REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+      } else {
+        REGB2 = TAG_Bool(false);
+        REGB1 = REGB2;
+      }
+      if (UNTAG_Bool(REGB1)) {
+        fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
         REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[7])(fra.me.REG[7]);
         REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
       } else {
@@ -481,43 +491,43 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:118 */
+        /* syntax/mmbuilder.nit:119 */
         CALL_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
       }
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label6;
     }
   }
   label6: while(0);
-  /* ./syntax//mmbuilder.nit:123 */
-  CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:126 */
+  /* syntax/mmbuilder.nit:124 */
+  CALL_toolcontext___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
+  /* syntax/mmbuilder.nit:127 */
   fra.me.REG[0] = NEW_PropertyVerifierVisitor_syntax___mmbuilder___PropertyVerifierVisitor___init(fra.me.REG[1], fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:232 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:233 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -525,33 +535,33 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:128 */
+      /* syntax/mmbuilder.nit:129 */
       CALL_syntax___mmbuilder___MMLocalClass___accept_properties_visitor(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label7;
     }
   }
   label7: while(0);
-  /* ./syntax//mmbuilder.nit:131 */
-  CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
+  /* syntax/mmbuilder.nit:132 */
+  CALL_toolcontext___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -568,13 +578,14 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
     fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcModule___do_mmbuilder;
     fra.me.has_broke = 0;
     fra.me.REG_size = 2;
+    fra.me.nitni_local_ref_head = NULL;
     fra.me.REG[0] = NIT_NULL;
     fra.me.REG[1] = NIT_NULL;
     fra.me.closure_ctx = closctx_param;
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./syntax//mmbuilder.nit:79 */
+    /* syntax/mmbuilder.nit:80 */
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
@@ -586,14 +597,14 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./syntax//mmbuilder.nit:79 */
+    /* syntax/mmbuilder.nit:80 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./syntax//mmbuilder.nit:80 */
+      /* syntax/mmbuilder.nit:81 */
       goto label2;
     }
-    /* ./syntax//mmbuilder.nit:82 */
+    /* syntax/mmbuilder.nit:83 */
     CALL_metamodel___inheritance___MMLocalClass___compute_super_classes(fra.me.REG[0])(fra.me.REG[0]);
     label2: while(0);
     stack_frame_head = fra.me.prev;
@@ -609,17 +620,18 @@ void syntax___mmbuilder___MMSrcModule___process_default_classes(val_t p0, val_t
     static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 134;
+  fra.me.line = 135;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcModule___process_default_classes;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:137 */
+  /* syntax/mmbuilder.nit:138 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Object");
@@ -634,20 +646,20 @@ void syntax___mmbuilder___MMSrcModule___process_default_classes(val_t p0, val_t
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
   fra.me.REG[1] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:138 */
+  /* syntax/mmbuilder.nit:139 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:139 */
+    /* syntax/mmbuilder.nit:140 */
     REGB0 = TAG_Int(0);
     fra.me.REG[2] = NEW_MMSrcLocalClass_syntax___syntax_base___MMSrcLocalClass___init(fra.me.REG[0], fra.me.REG[1], NIT_NULL, REGB0);
-    /* ./syntax//mmbuilder.nit:140 */
+    /* syntax/mmbuilder.nit:141 */
     CALL_metamodel___abstractmetamodel___MMLocalClass___new_global(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:141 */
+    /* syntax/mmbuilder.nit:142 */
     fra.me.REG[3] = CALL_syntax___syntax_base___MMSrcModule___src_local_classes(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2]);
   }
-  /* ./syntax//mmbuilder.nit:143 */
+  /* syntax/mmbuilder.nit:144 */
   if (!once_value_3) {
     if (!once_value_4) {
       fra.me.REG[2] = BOX_NativeString("Bool");
@@ -663,16 +675,16 @@ void syntax___mmbuilder___MMSrcModule___process_default_classes(val_t p0, val_t
   } else fra.me.REG[2] = once_value_3;
   fra.me.REG[2] = fra.me.REG[2];
   fra.me.REG[1] = fra.me.REG[2];
-  /* ./syntax//mmbuilder.nit:144 */
+  /* syntax/mmbuilder.nit:145 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:145 */
+    /* syntax/mmbuilder.nit:146 */
     REGB0 = TAG_Int(0);
     fra.me.REG[2] = NEW_MMSrcLocalClass_syntax___syntax_base___MMSrcLocalClass___init(fra.me.REG[0], fra.me.REG[1], NIT_NULL, REGB0);
-    /* ./syntax//mmbuilder.nit:146 */
+    /* syntax/mmbuilder.nit:147 */
     CALL_metamodel___abstractmetamodel___MMLocalClass___new_global(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:147 */
+    /* syntax/mmbuilder.nit:148 */
     fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcModule___src_local_classes(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
   }
@@ -684,10 +696,11 @@ void syntax___mmbuilder___MMLocalClass___accept_class_visitor(val_t p0, val_t p1
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 153;
+  fra.me.line = 154;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMLocalClass___accept_class_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
@@ -700,10 +713,11 @@ void syntax___mmbuilder___MMLocalClass___accept_properties_visitor(val_t p0, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 158;
+  fra.me.line = 159;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMLocalClass___accept_properties_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
@@ -718,18 +732,19 @@ void syntax___mmbuilder___MMSrcLocalClass___accept_class_visitor(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 165;
+  fra.me.line = 166;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___accept_class_visitor;
   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;
-  /* ./syntax//mmbuilder.nit:167 */
+  /* syntax/mmbuilder.nit:168 */
   fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:168 */
+  /* syntax/mmbuilder.nit:169 */
   while(1) {
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -745,17 +760,17 @@ void syntax___mmbuilder___MMSrcLocalClass___accept_class_visitor(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:169 */
+      /* syntax/mmbuilder.nit:170 */
       CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-      /* ./syntax//mmbuilder.nit:170 */
+      /* syntax/mmbuilder.nit:171 */
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 170);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 171);
       }
       fra.me.REG[2] = CALL_syntax___syntax_base___AClassdef___next_node(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[0] = fra.me.REG[2];
     } else {
-      /* ./syntax//mmbuilder.nit:168 */
+      /* syntax/mmbuilder.nit:169 */
       goto label1;
     }
   }
@@ -770,19 +785,20 @@ void syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 174;
+  fra.me.line = 175;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:177 */
+  /* syntax/mmbuilder.nit:178 */
   fra.me.REG[2] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:178 */
+  /* syntax/mmbuilder.nit:179 */
   while(1) {
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -798,23 +814,24 @@ void syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor(val_t p0,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:179 */
+      /* syntax/mmbuilder.nit:180 */
       CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-      /* ./syntax//mmbuilder.nit:180 */
+      /* syntax/mmbuilder.nit:181 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 180);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 181);
       }
       fra.me.REG[3] = CALL_syntax___syntax_base___AClassdef___next_node(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[2] = fra.me.REG[3];
     } else {
-      /* ./syntax//mmbuilder.nit:178 */
+      /* syntax/mmbuilder.nit:179 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./syntax//mmbuilder.nit:183 */
+  /* syntax/mmbuilder.nit:184 */
   fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcLocalClass___src_local_properties(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor_2));
   stack_frame_head = fra.me.prev;
   return;
@@ -829,12 +846,13 @@ void syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor(val_t p0,
     fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor;
     fra.me.has_broke = 0;
     fra.me.REG_size = 1;
+    fra.me.nitni_local_ref_head = NULL;
     fra.me.REG[0] = NIT_NULL;
     fra.me.closure_ctx = closctx_param;
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./syntax//mmbuilder.nit:184 */
+    /* syntax/mmbuilder.nit:185 */
     CALL_syntax___mmbuilder___MMLocalProperty___accept_property_visitor(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
     stack_frame_head = fra.me.prev;
     return;
@@ -855,10 +873,11 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       static val_t once_value_18; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 188;
+  fra.me.line = 189;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
+  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;
@@ -872,40 +891,40 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
   fra.me.REG[10] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:188 */
+  /* syntax/mmbuilder.nit:189 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:192 */
+  /* syntax/mmbuilder.nit:193 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[2])(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_1));
   switch ((&(fra.me))->has_broke) {
     case 0: break;
     case 1: (&(fra.me))->has_broke = 0; goto label3;
   }
-  /* ./syntax//mmbuilder.nit:200 */
+  /* syntax/mmbuilder.nit:201 */
   fra.me.REG[3] = NEW_ArraySet_standard___collection___array___ArraySet___init();
-  /* ./syntax//mmbuilder.nit:201 */
+  /* syntax/mmbuilder.nit:202 */
   fra.me.REG[4] = NEW_ArraySet_standard___collection___array___ArraySet___init();
-  /* ./syntax//mmbuilder.nit:202 */
+  /* syntax/mmbuilder.nit:203 */
   fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[5])(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:232 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:233 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -913,21 +932,29 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:203 */
+      /* syntax/mmbuilder.nit:204 */
       fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[7])(fra.me.REG[7]);
       REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[8])(fra.me.REG[8]);
       if (UNTAG_Bool(REGB1)) {
+        fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[7])(fra.me.REG[7]);
+        REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[8])(fra.me.REG[8]);
+        REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+      } else {
+        REGB2 = TAG_Bool(false);
+        REGB1 = REGB2;
+      }
+      if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(true);
       } else {
         fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[7])(fra.me.REG[7]);
@@ -937,10 +964,10 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       if (UNTAG_Bool(REGB1)) {
         goto label4;
       }
-      /* ./syntax//mmbuilder.nit:204 */
+      /* syntax/mmbuilder.nit:205 */
       fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[7])(fra.me.REG[7]);
       CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[8])(fra.me.REG[8], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_5));
-      /* ./syntax//mmbuilder.nit:208 */
+      /* syntax/mmbuilder.nit:209 */
       if (!once_value_7) {
         if (!once_value_8) {
           fra.me.REG[8] = BOX_NativeString("init");
@@ -955,66 +982,67 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
         register_static_object(&once_value_7);
       } else fra.me.REG[8] = once_value_7;
       fra.me.REG[8] = fra.me.REG[8];
-      /* ./syntax//mmbuilder.nit:209 */
+      /* syntax/mmbuilder.nit:210 */
       REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:210 */
+        /* syntax/mmbuilder.nit:211 */
         fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
-        /* ./syntax//mmbuilder.nit:211 */
+        /* syntax/mmbuilder.nit:212 */
         fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8]);
       }
       label4: while(0);
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label9;
     }
   }
   label9: while(0);
-  /* ./syntax//mmbuilder.nit:216 */
+  /* syntax/mmbuilder.nit:217 */
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-  /* ./syntax//mmbuilder.nit:217 */
+  /* syntax/mmbuilder.nit:218 */
   fra.me.REG[5] = CALL_syntax___syntax_base___MMSrcLocalClass___src_local_properties(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[5] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[5])(fra.me.REG[5]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[5])(fra.me.REG[5], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_10));
-  /* ./syntax//mmbuilder.nit:224 */
+  /* syntax/mmbuilder.nit:225 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:227 */
+    /* syntax/mmbuilder.nit:228 */
     fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
     CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_11));
-    /* ./syntax//mmbuilder.nit:235 */
+    /* syntax/mmbuilder.nit:236 */
     fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[8] = CALL_metamodel___partial_order___PartialOrderElement___order(fra.me.REG[8])(fra.me.REG[8]);
     fra.me.REG[8] = CALL_metamodel___partial_order___PartialOrder___select_smallests(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
     fra.me.REG[5] = fra.me.REG[8];
-    /* ./syntax//mmbuilder.nit:238 */
+    /* syntax/mmbuilder.nit:239 */
     fra.me.REG[8] = NIT_NULL;
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-    /* ./syntax//mmbuilder.nit:240 */
+    /* syntax/mmbuilder.nit:241 */
     REGB1 = TAG_Int(1);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB2)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:217 */
+    /* ../lib/standard/kernel.nit:234 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-    /* ./syntax//mmbuilder.nit:240 */
+    /* syntax/mmbuilder.nit:241 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./syntax//mmbuilder.nit:241 */
+      /* syntax/mmbuilder.nit:242 */
       fra.me.REG[7] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[2])(fra.me.REG[2]);
       REGB1 = TAG_Int(7);
       fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
@@ -1078,51 +1106,51 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
       fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
       CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7], fra.me.REG[9]);
-      /* ./syntax//mmbuilder.nit:242 */
+      /* syntax/mmbuilder.nit:243 */
       goto label3;
     } else {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-      /* ./syntax//mmbuilder.nit:243 */
+      /* syntax/mmbuilder.nit:244 */
       REGB0 = TAG_Int(1);
       REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB0));
       if (UNTAG_Bool(REGB2)) {
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ../lib/standard/kernel.nit:227 */
         REGB0 = TAG_Bool((REGB1)==(REGB0));
-        /* ./syntax//mmbuilder.nit:243 */
+        /* syntax/mmbuilder.nit:244 */
         REGB2 = REGB0;
       }
       if (UNTAG_Bool(REGB2)) {
-        /* ./syntax//mmbuilder.nit:244 */
+        /* syntax/mmbuilder.nit:245 */
         fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
         fra.me.REG[8] = fra.me.REG[5];
       }
     }
     CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_19));
-    /* ./syntax//mmbuilder.nit:253 */
+    /* syntax/mmbuilder.nit:254 */
     fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[2])(fra.me.REG[2]);
     REGB2 = TAG_Bool(fra.me.REG[8]!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 253);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 254);
     }
     REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 253);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 254);
     }
     fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[8])(fra.me.REG[8]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___mixin_of__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
   } else {
-    /* ./syntax//mmbuilder.nit:258 */
+    /* syntax/mmbuilder.nit:259 */
     fra.me.REG[3] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
     fra.me.REG[3] = NEW_MMImplicitInit_syntax___syntax_base___MMImplicitInit___init(fra.me.REG[2], fra.me.REG[6], fra.me.REG[3]);
-    /* ./syntax//mmbuilder.nit:259 */
+    /* syntax/mmbuilder.nit:260 */
     CALL_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[3]);
   }
   label3: while(0);
@@ -1141,15 +1169,16 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
     fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors;
     fra.me.has_broke = 0;
     fra.me.REG_size = 1;
+    fra.me.nitni_local_ref_head = NULL;
     fra.me.REG[0] = NIT_NULL;
     fra.me.closure_ctx = closctx_param;
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./syntax//mmbuilder.nit:193 */
+    /* syntax/mmbuilder.nit:194 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:195 */
+      /* syntax/mmbuilder.nit:196 */
       fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],closctx->REG[2]));
@@ -1177,15 +1206,16 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
         fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors;
         fra.me.has_broke = 0;
         fra.me.REG_size = 1;
+        fra.me.nitni_local_ref_head = NULL;
         fra.me.REG[0] = NIT_NULL;
         fra.me.REG[0] = p0;
-        /* ./syntax//mmbuilder.nit:205 */
+        /* syntax/mmbuilder.nit:206 */
         REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
         REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
         if (UNTAG_Bool(REGB0)) {
           goto label6;
         }
-        /* ./syntax//mmbuilder.nit:206 */
+        /* syntax/mmbuilder.nit:207 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], fra.me.REG[0]);
         label6: while(0);
         stack_frame_head = fra.me.prev;
@@ -1203,21 +1233,22 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
     fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors;
     fra.me.has_broke = 0;
     fra.me.REG_size = 2;
+    fra.me.nitni_local_ref_head = NULL;
     fra.me.REG[0] = NIT_NULL;
     fra.me.REG[1] = NIT_NULL;
     fra.me.closure_ctx = closctx_param;
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./syntax//mmbuilder.nit:218 */
+    /* syntax/mmbuilder.nit:219 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_syntax___syntax_base___MMSrcAttribute, ID_syntax___syntax_base___MMSrcAttribute)) /*cast MMSrcAttribute*/;
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:219 */
+      /* syntax/mmbuilder.nit:220 */
       fra.me.REG[1] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
-      /* ./syntax//mmbuilder.nit:220 */
+      /* syntax/mmbuilder.nit:221 */
       REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 220);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 221);
       }
       fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
@@ -1244,32 +1275,33 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       val_t REGB0;
       fun_t CREG[1];
       val_t tmp;
-      /* ./syntax//mmbuilder.nit:228 */
+      /* syntax/mmbuilder.nit:229 */
       fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
       fra.me.file = LOCATE_syntax___mmbuilder;
       fra.me.line = 0;
       fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors;
       fra.me.has_broke = 0;
       fra.me.REG_size = 2;
+      fra.me.nitni_local_ref_head = NULL;
       fra.me.REG[0] = NIT_NULL;
       fra.me.REG[1] = NIT_NULL;
       fra.me.closure_ctx = closctx_param;
       fra.me.closure_funs = CREG;
       fra.me.REG[0] = p0;
       CREG[0] = clos_fun0;
-      /* ./syntax//mmbuilder.nit:229 */
+      /* syntax/mmbuilder.nit:230 */
       fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-      /* ./syntax//mmbuilder.nit:230 */
+      /* syntax/mmbuilder.nit:231 */
       REGB0 = CALL_standard___collection___abstract_collection___Collection___has(closctx->REG[5])(closctx->REG[5], fra.me.REG[0]);
       if (UNTAG_Bool(REGB0)) {
         goto label12;
       }
-      /* ./syntax//mmbuilder.nit:231 */
+      /* syntax/mmbuilder.nit:232 */
       fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:232 */
+        /* syntax/mmbuilder.nit:233 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[5])(closctx->REG[5], fra.me.REG[0]);
       }
       label12: while(0);
@@ -1283,20 +1315,21 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       val_t REGB2;
       fun_t CREG[1];
       val_t tmp;
-      /* ./syntax//mmbuilder.nit:247 */
+      /* syntax/mmbuilder.nit:248 */
       fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
       fra.me.file = LOCATE_syntax___mmbuilder;
       fra.me.line = 0;
       fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors;
       fra.me.has_broke = 0;
       fra.me.REG_size = 2;
+      fra.me.nitni_local_ref_head = NULL;
       fra.me.REG[0] = NIT_NULL;
       fra.me.REG[1] = NIT_NULL;
       fra.me.closure_ctx = closctx_param;
       fra.me.closure_funs = CREG;
       fra.me.REG[0] = p0;
       CREG[0] = clos_fun0;
-      /* ./syntax//mmbuilder.nit:249 */
+      /* syntax/mmbuilder.nit:250 */
       REGB0 = TAG_Bool(closctx->REG[8]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -1322,7 +1355,7 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:250 */
+        /* syntax/mmbuilder.nit:251 */
         CALL_metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
       }
       stack_frame_head = fra.me.prev;
@@ -1337,10 +1370,11 @@ void syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(val_t p0, val
     static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 264;
+  fra.me.line = 265;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
+  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;
@@ -1351,13 +1385,13 @@ void syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(val_t p0, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:268 */
+  /* syntax/mmbuilder.nit:269 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:270 */
+  /* syntax/mmbuilder.nit:271 */
   fra.me.REG[4] = CALL_syntax___syntax_base___MMSrcLocalClass___src_local_properties(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:271 */
+    /* syntax/mmbuilder.nit:272 */
     fra.me.REG[4] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Int(5);
     fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -1395,27 +1429,27 @@ void syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(val_t p0, val
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
     fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
-    /* ./syntax//mmbuilder.nit:272 */
+    /* syntax/mmbuilder.nit:273 */
     goto label4;
   }
-  /* ./syntax//mmbuilder.nit:274 */
+  /* syntax/mmbuilder.nit:275 */
   fra.me.REG[5] = CALL_syntax___syntax_base___MMSrcLocalClass___src_local_properties(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:277 */
+  /* syntax/mmbuilder.nit:278 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:278 */
+    /* syntax/mmbuilder.nit:279 */
     fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    /* ./syntax//mmbuilder.nit:279 */
+    /* syntax/mmbuilder.nit:280 */
     CALL_metamodel___inheritance___MMLocalProperty___inherit_global(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   }
-  /* ./syntax//mmbuilder.nit:282 */
+  /* syntax/mmbuilder.nit:283 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMLocalProperty___is_global_set(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:283 */
+    /* syntax/mmbuilder.nit:284 */
     CALL_metamodel___abstractmetamodel___MMLocalProperty___new_global(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:284 */
+    /* syntax/mmbuilder.nit:285 */
     fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
     CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
@@ -1429,10 +1463,11 @@ void syntax___mmbuilder___MMLocalProperty___accept_property_visitor(val_t p0, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 290;
+  fra.me.line = 291;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMLocalProperty___accept_property_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
@@ -1445,13 +1480,14 @@ val_t syntax___mmbuilder___MMImplicitInit___super_init(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 296;
+  fra.me.line = 297;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMImplicitInit___super_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:296 */
+  /* syntax/mmbuilder.nit:297 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___MMImplicitInit____super_init(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1470,10 +1506,11 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
           static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 297;
+  fra.me.line = 298;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMImplicitInit___accept_property_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -1485,30 +1522,30 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:297 */
+  /* syntax/mmbuilder.nit:298 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:299 */
+  /* syntax/mmbuilder.nit:300 */
   fra.me.REG[3] = NIT_NULL;
-  /* ./syntax//mmbuilder.nit:300 */
+  /* syntax/mmbuilder.nit:301 */
   fra.me.REG[4] = CALL_syntax___syntax_base___MMImplicitInit___super_inits(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:232 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:233 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -1516,22 +1553,22 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:301 */
+      /* syntax/mmbuilder.nit:302 */
       fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[6])(fra.me.REG[6]);
       REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 301);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 302);
       }
       REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[7])(fra.me.REG[7]);
       REGB2 = TAG_Int(0);
@@ -1540,11 +1577,11 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ./../lib/standard//kernel.nit:217 */
+      /* ../lib/standard/kernel.nit:234 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
-      /* ./syntax//mmbuilder.nit:301 */
+      /* syntax/mmbuilder.nit:302 */
       if (UNTAG_Bool(REGB2)) {
-        /* ./syntax//mmbuilder.nit:302 */
+        /* syntax/mmbuilder.nit:303 */
         REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
@@ -1558,10 +1595,10 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
           }
         }
         if (UNTAG_Bool(REGB2)) {
-          /* ./syntax//mmbuilder.nit:303 */
+          /* syntax/mmbuilder.nit:304 */
           fra.me.REG[3] = fra.me.REG[6];
         } else {
-          /* ./syntax//mmbuilder.nit:305 */
+          /* syntax/mmbuilder.nit:306 */
           REGB2 = TAG_Int(7);
           fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
           if (!once_value_1) {
@@ -1587,7 +1624,7 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
           REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 305);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 306);
           }
           fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[3])(fra.me.REG[3]);
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
@@ -1613,27 +1650,27 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
           fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
           CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], NIT_NULL, fra.me.REG[7]);
-          /* ./syntax//mmbuilder.nit:306 */
+          /* syntax/mmbuilder.nit:307 */
           goto label5;
         }
       }
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label6;
     }
   }
   label6: while(0);
-  /* ./syntax//mmbuilder.nit:310 */
+  /* syntax/mmbuilder.nit:311 */
   ATTR_syntax___mmbuilder___MMImplicitInit____super_init(fra.me.REG[2]) = fra.me.REG[3];
-  /* ./syntax//mmbuilder.nit:312 */
+  /* syntax/mmbuilder.nit:313 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  /* ./syntax//mmbuilder.nit:313 */
+  /* syntax/mmbuilder.nit:314 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1648,53 +1685,53 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:314 */
+    /* syntax/mmbuilder.nit:315 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 314);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 315);
     }
     fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
-    /* ./syntax//mmbuilder.nit:315 */
+    /* syntax/mmbuilder.nit:316 */
     REGB0 = TAG_Int(0);
     REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 315);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 316);
     }
     REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ../lib/standard/kernel.nit:352 */
     while(1) {
       REGB1 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB1)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ./../lib/standard//kernel.nit:215 */
+      /* ../lib/standard/kernel.nit:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ../lib/standard/kernel.nit:352 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:315 */
+        /* syntax/mmbuilder.nit:316 */
         REGB1 = REGB0;
-        /* ./syntax//mmbuilder.nit:316 */
+        /* syntax/mmbuilder.nit:317 */
         REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 316);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 317);
         }
         fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[3])(fra.me.REG[3]);
-        /* ./../lib/standard//collection//array.nit:243 */
+        /* ../lib/standard/collection/array.nit:280 */
         REGB3 = TAG_Int(0);
         REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB4)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ./../lib/standard//kernel.nit:216 */
+        /* ../lib/standard/kernel.nit:233 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB3));
-        /* ./../lib/standard//collection//array.nit:243 */
+        /* ../lib/standard/collection/array.nit:280 */
         if (UNTAG_Bool(REGB3)) {
           REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 243);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
           REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
           REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -1702,63 +1739,63 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ./../lib/standard//kernel.nit:215 */
+          /* ../lib/standard/kernel.nit:232 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB3));
         } else {
-          /* ./../lib/standard//collection//array.nit:243 */
+          /* ../lib/standard/collection/array.nit:280 */
           REGB4 = TAG_Bool(false);
           REGB3 = REGB4;
         }
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 243);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:244 */
+        /* ../lib/standard/collection/array.nit:281 */
         fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
         REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 244);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:652 */
+        /* ../lib/standard/collection/array.nit:718 */
         fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
-        /* ./../lib/standard//collection//array.nit:244 */
+        /* ../lib/standard/collection/array.nit:281 */
         goto label7;
         label7: while(0);
-        /* ./syntax//mmbuilder.nit:316 */
+        /* syntax/mmbuilder.nit:317 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ../lib/standard/kernel.nit:354 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ../lib/standard/kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ../lib/standard/kernel.nit:354 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ../lib/standard/kernel.nit:352 */
         goto label8;
       }
     }
     label8: while(0);
   }
-  /* ./syntax//mmbuilder.nit:319 */
+  /* syntax/mmbuilder.nit:320 */
   fra.me.REG[3] = CALL_syntax___syntax_base___MMImplicitInit___unassigned_attributes(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:232 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:233 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
     REGB1 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -1766,20 +1803,20 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:320 */
+      /* syntax/mmbuilder.nit:321 */
       fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
-      /* ./syntax//mmbuilder.nit:321 */
+      /* syntax/mmbuilder.nit:322 */
       REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
@@ -1795,9 +1832,9 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
       if (UNTAG_Bool(REGB2)) {
         goto label5;
       }
-      /* ./syntax//mmbuilder.nit:322 */
+      /* syntax/mmbuilder.nit:323 */
       fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
-      /* ./syntax//mmbuilder.nit:323 */
+      /* syntax/mmbuilder.nit:324 */
       fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
       fra.me.REG[8] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[8])(fra.me.REG[8]);
       REGB2 = TAG_Char('_');
@@ -1809,9 +1846,9 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
           REGB3 = TAG_Bool(false);
           REGB1 = REGB3;
         } else {
-          /* ./../lib/standard//kernel.nit:350 */
+          /* ../lib/standard/kernel.nit:378 */
           REGB2 = TAG_Bool((fra.me.REG[8])==(REGB2));
-          /* ./syntax//mmbuilder.nit:323 */
+          /* syntax/mmbuilder.nit:324 */
           REGB1 = REGB2;
         }
       }
@@ -1829,48 +1866,48 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
             REGB4 = TAG_Bool(false);
             REGB3 = REGB4;
           } else {
-            /* ./../lib/standard//kernel.nit:350 */
+            /* ../lib/standard/kernel.nit:378 */
             REGB2 = TAG_Bool((fra.me.REG[8])==(REGB2));
-            /* ./syntax//mmbuilder.nit:323 */
+            /* syntax/mmbuilder.nit:324 */
             REGB3 = REGB2;
           }
         }
         REGB1 = REGB3;
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:324 */
+        /* syntax/mmbuilder.nit:325 */
         fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
         REGB1 = TAG_Int(1);
         fra.me.REG[4] = CALL_standard___string___AbstractString___substring_from(fra.me.REG[4])(fra.me.REG[4], REGB1);
         fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
         fra.me.REG[6] = fra.me.REG[4];
       }
-      /* ./syntax//mmbuilder.nit:326 */
+      /* syntax/mmbuilder.nit:327 */
       REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 326);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 327);
       }
       fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
       REGB1 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 326);
+        nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 327);
       }
       fra.me.REG[6] = NEW_MMParam_metamodel___static_type___MMParam___init(fra.me.REG[7], fra.me.REG[6]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label9;
     }
   }
   label9: while(0);
-  /* ./syntax//mmbuilder.nit:328 */
+  /* syntax/mmbuilder.nit:329 */
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[0] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[1], NIT_NULL, fra.me.REG[0]);
@@ -1885,17 +1922,18 @@ val_t syntax___mmbuilder___MMSrcAncestor___local_class(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 336;
+  fra.me.line = 337;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcAncestor___local_class;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:336 */
+  /* syntax/mmbuilder.nit:337 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___MMSrcAncestor____local_class(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_syntax___mmbuilder, 336);
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_syntax___mmbuilder, 337);
   }
   fra.me.REG[0] = ATTR_syntax___mmbuilder___MMSrcAncestor____local_class(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1908,19 +1946,20 @@ void syntax___mmbuilder___MMSrcAncestor___init(val_t p0, val_t p1, int* init_tab
   if (init_table[itpos1]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 338;
+  fra.me.line = 339;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcAncestor___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;
-  /* ./syntax//mmbuilder.nit:338 */
+  /* syntax/mmbuilder.nit:339 */
   fra.me.REG[2] = fra.me.REG[0];
   CALL_metamodel___static_type___MMAncestor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./syntax//mmbuilder.nit:340 */
+  /* syntax/mmbuilder.nit:341 */
   ATTR_syntax___mmbuilder___MMSrcAncestor____local_class(fra.me.REG[2]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
@@ -1932,17 +1971,18 @@ val_t syntax___mmbuilder___ClassBuilderVisitor___local_class_arity(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 351;
+  fra.me.line = 352;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:351 */
+  /* syntax/mmbuilder.nit:352 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___ClassBuilderVisitor____local_class_arity(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class_arity", LOCATE_syntax___mmbuilder, 351);
+    nit_abort("Uninitialized attribute %s", "_local_class_arity", LOCATE_syntax___mmbuilder, 352);
   }
   REGB0 = ATTR_syntax___mmbuilder___ClassBuilderVisitor____local_class_arity(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1954,14 +1994,15 @@ void syntax___mmbuilder___ClassBuilderVisitor___local_class_arity__eq(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 351;
+  fra.me.line = 352;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./syntax//mmbuilder.nit:351 */
+  /* syntax/mmbuilder.nit:352 */
   ATTR_syntax___mmbuilder___ClassBuilderVisitor____local_class_arity(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;
@@ -1971,13 +2012,14 @@ val_t syntax___mmbuilder___ClassBuilderVisitor___formals(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 354;
+  fra.me.line = 355;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassBuilderVisitor___formals;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:354 */
+  /* syntax/mmbuilder.nit:355 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___ClassBuilderVisitor____formals(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1987,15 +2029,16 @@ void syntax___mmbuilder___ClassBuilderVisitor___formals__eq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 354;
+  fra.me.line = 355;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassBuilderVisitor___formals__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:354 */
+  /* syntax/mmbuilder.nit:355 */
   ATTR_syntax___mmbuilder___ClassBuilderVisitor____formals(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2006,18 +2049,19 @@ void syntax___mmbuilder___ClassBuilderVisitor___visit(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 357;
+  fra.me.line = 358;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassBuilderVisitor___visit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:357 */
+  /* syntax/mmbuilder.nit:358 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 357);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 358);
   }
   CALL_syntax___mmbuilder___ANode___accept_class_builder(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2030,17 +2074,18 @@ void syntax___mmbuilder___ClassBuilderVisitor___init(val_t p0, val_t p1, val_t p
   if (init_table[itpos2]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 358;
+  fra.me.line = 359;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassBuilderVisitor___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;
-  /* ./syntax//mmbuilder.nit:358 */
+  /* syntax/mmbuilder.nit:359 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos2] = 1;
@@ -2052,18 +2097,19 @@ void syntax___mmbuilder___ClassSpecializationBuilderVisitor___visit(val_t p0, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 365;
+  fra.me.line = 366;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassSpecializationBuilderVisitor___visit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:365 */
+  /* syntax/mmbuilder.nit:366 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 365);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 366);
   }
   CALL_syntax___mmbuilder___ANode___accept_class_specialization_builder(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2076,17 +2122,18 @@ void syntax___mmbuilder___ClassSpecializationBuilderVisitor___init(val_t p0, val
   if (init_table[itpos3]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 366;
+  fra.me.line = 367;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassSpecializationBuilderVisitor___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;
-  /* ./syntax//mmbuilder.nit:366 */
+  /* syntax/mmbuilder.nit:367 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos3] = 1;
@@ -2098,18 +2145,19 @@ void syntax___mmbuilder___ClassAncestorBuilder___visit(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 373;
+  fra.me.line = 374;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassAncestorBuilder___visit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:373 */
+  /* syntax/mmbuilder.nit:374 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 373);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 374);
   }
   CALL_syntax___mmbuilder___ANode___accept_class_ancestor_builder(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2122,17 +2170,18 @@ void syntax___mmbuilder___ClassAncestorBuilder___init(val_t p0, val_t p1, val_t
   if (init_table[itpos4]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 374;
+  fra.me.line = 375;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassAncestorBuilder___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;
-  /* ./syntax//mmbuilder.nit:374 */
+  /* syntax/mmbuilder.nit:375 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos4] = 1;
@@ -2144,18 +2193,19 @@ void syntax___mmbuilder___ClassVerifierVisitor___visit(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 381;
+  fra.me.line = 382;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassVerifierVisitor___visit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:381 */
+  /* syntax/mmbuilder.nit:382 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 381);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 382);
   }
   CALL_syntax___mmbuilder___ANode___accept_class_verifier(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2168,17 +2218,18 @@ void syntax___mmbuilder___ClassVerifierVisitor___init(val_t p0, val_t p1, val_t
   if (init_table[itpos5]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 382;
+  fra.me.line = 383;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassVerifierVisitor___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;
-  /* ./syntax//mmbuilder.nit:382 */
+  /* syntax/mmbuilder.nit:383 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos5] = 1;
@@ -2190,18 +2241,19 @@ void syntax___mmbuilder___PropertyBuilderVisitor___visit(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 392;
+  fra.me.line = 393;
   fra.me.meth = LOCATE_syntax___mmbuilder___PropertyBuilderVisitor___visit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:392 */
+  /* syntax/mmbuilder.nit:393 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 392);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 393);
   }
   CALL_syntax___mmbuilder___ANode___accept_property_builder(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2214,17 +2266,18 @@ void syntax___mmbuilder___PropertyBuilderVisitor___init(val_t p0, val_t p1, val_
   if (init_table[itpos6]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 393;
+  fra.me.line = 394;
   fra.me.meth = LOCATE_syntax___mmbuilder___PropertyBuilderVisitor___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;
-  /* ./syntax//mmbuilder.nit:393 */
+  /* syntax/mmbuilder.nit:394 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos6] = 1;
@@ -2236,17 +2289,18 @@ val_t syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(val_t p0)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 401;
+  fra.me.line = 402;
   fra.me.meth = LOCATE_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:401 */
+  /* syntax/mmbuilder.nit:402 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___PropertyVerifierVisitor____signature_builder(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_signature_builder", LOCATE_syntax___mmbuilder, 401);
+    nit_abort("Uninitialized attribute %s", "_signature_builder", LOCATE_syntax___mmbuilder, 402);
   }
   fra.me.REG[0] = ATTR_syntax___mmbuilder___PropertyVerifierVisitor____signature_builder(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2257,15 +2311,16 @@ void syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq(val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 401;
+  fra.me.line = 402;
   fra.me.meth = LOCATE_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:401 */
+  /* syntax/mmbuilder.nit:402 */
   ATTR_syntax___mmbuilder___PropertyVerifierVisitor____signature_builder(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2276,18 +2331,19 @@ void syntax___mmbuilder___PropertyVerifierVisitor___visit(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 404;
+  fra.me.line = 405;
   fra.me.meth = LOCATE_syntax___mmbuilder___PropertyVerifierVisitor___visit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:404 */
+  /* syntax/mmbuilder.nit:405 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 404);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 405);
   }
   CALL_syntax___mmbuilder___ANode___accept_property_verifier(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2300,10 +2356,11 @@ void syntax___mmbuilder___PropertyVerifierVisitor___init(val_t p0, val_t p1, val
   if (init_table[itpos7]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 406;
+  fra.me.line = 407;
   fra.me.meth = LOCATE_syntax___mmbuilder___PropertyVerifierVisitor___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;
@@ -2311,11 +2368,11 @@ void syntax___mmbuilder___PropertyVerifierVisitor___init(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:406 */
+  /* syntax/mmbuilder.nit:407 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:408 */
+  /* syntax/mmbuilder.nit:409 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  /* ./syntax//mmbuilder.nit:409 */
+  /* syntax/mmbuilder.nit:410 */
   fra.me.REG[2] = NEW_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init();
   ATTR_syntax___mmbuilder___PropertyVerifierVisitor____signature_builder(fra.me.REG[3]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
@@ -2328,17 +2385,18 @@ val_t syntax___mmbuilder___SignatureBuilder___params(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 415;
+  fra.me.line = 416;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___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;
-  /* ./syntax//mmbuilder.nit:415 */
+  /* syntax/mmbuilder.nit:416 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___SignatureBuilder____params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_params", LOCATE_syntax___mmbuilder, 415);
+    nit_abort("Uninitialized attribute %s", "_params", LOCATE_syntax___mmbuilder, 416);
   }
   fra.me.REG[0] = ATTR_syntax___mmbuilder___SignatureBuilder____params(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2349,15 +2407,16 @@ void syntax___mmbuilder___SignatureBuilder___params__eq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 415;
+  fra.me.line = 416;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___params__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:415 */
+  /* syntax/mmbuilder.nit:416 */
   ATTR_syntax___mmbuilder___SignatureBuilder____params(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2368,17 +2427,18 @@ val_t syntax___mmbuilder___SignatureBuilder___untyped_params(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 418;
+  fra.me.line = 419;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___untyped_params;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:418 */
+  /* syntax/mmbuilder.nit:419 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___SignatureBuilder____untyped_params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_untyped_params", LOCATE_syntax___mmbuilder, 418);
+    nit_abort("Uninitialized attribute %s", "_untyped_params", LOCATE_syntax___mmbuilder, 419);
   }
   fra.me.REG[0] = ATTR_syntax___mmbuilder___SignatureBuilder____untyped_params(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2389,15 +2449,16 @@ void syntax___mmbuilder___SignatureBuilder___untyped_params__eq(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 418;
+  fra.me.line = 419;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___untyped_params__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:418 */
+  /* syntax/mmbuilder.nit:419 */
   ATTR_syntax___mmbuilder___SignatureBuilder____untyped_params(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2408,17 +2469,18 @@ val_t syntax___mmbuilder___SignatureBuilder___vararg_rank(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 421;
+  fra.me.line = 422;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___vararg_rank;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:421 */
+  /* syntax/mmbuilder.nit:422 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___SignatureBuilder____vararg_rank(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_vararg_rank", LOCATE_syntax___mmbuilder, 421);
+    nit_abort("Uninitialized attribute %s", "_vararg_rank", LOCATE_syntax___mmbuilder, 422);
   }
   REGB0 = ATTR_syntax___mmbuilder___SignatureBuilder____vararg_rank(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2430,14 +2492,15 @@ void syntax___mmbuilder___SignatureBuilder___vararg_rank__eq(val_t p0, val_t p1)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 421;
+  fra.me.line = 422;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___vararg_rank__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./syntax//mmbuilder.nit:421 */
+  /* syntax/mmbuilder.nit:422 */
   ATTR_syntax___mmbuilder___SignatureBuilder____vararg_rank(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;
@@ -2448,17 +2511,18 @@ val_t syntax___mmbuilder___SignatureBuilder___closure_decls(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 424;
+  fra.me.line = 425;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___closure_decls;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:424 */
+  /* syntax/mmbuilder.nit:425 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___SignatureBuilder____closure_decls(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closure_decls", LOCATE_syntax___mmbuilder, 424);
+    nit_abort("Uninitialized attribute %s", "_closure_decls", LOCATE_syntax___mmbuilder, 425);
   }
   fra.me.REG[0] = ATTR_syntax___mmbuilder___SignatureBuilder____closure_decls(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2469,15 +2533,16 @@ void syntax___mmbuilder___SignatureBuilder___closure_decls__eq(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 424;
+  fra.me.line = 425;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___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;
-  /* ./syntax//mmbuilder.nit:424 */
+  /* syntax/mmbuilder.nit:425 */
   ATTR_syntax___mmbuilder___SignatureBuilder____closure_decls(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2488,17 +2553,18 @@ val_t syntax___mmbuilder___SignatureBuilder___has_error_occured(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 427;
+  fra.me.line = 428;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___has_error_occured;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:427 */
+  /* syntax/mmbuilder.nit:428 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___SignatureBuilder____has_error_occured(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_has_error_occured", LOCATE_syntax___mmbuilder, 427);
+    nit_abort("Uninitialized attribute %s", "_has_error_occured", LOCATE_syntax___mmbuilder, 428);
   }
   REGB0 = ATTR_syntax___mmbuilder___SignatureBuilder____has_error_occured(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2510,14 +2576,15 @@ void syntax___mmbuilder___SignatureBuilder___has_error_occured__eq(val_t p0, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 427;
+  fra.me.line = 428;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___has_error_occured__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./syntax//mmbuilder.nit:427 */
+  /* syntax/mmbuilder.nit:428 */
   ATTR_syntax___mmbuilder___SignatureBuilder____has_error_occured(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;
@@ -2527,13 +2594,14 @@ val_t syntax___mmbuilder___SignatureBuilder___signature(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 430;
+  fra.me.line = 431;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___signature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:430 */
+  /* syntax/mmbuilder.nit:431 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___SignatureBuilder____signature(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -2543,15 +2611,16 @@ void syntax___mmbuilder___SignatureBuilder___signature__eq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 430;
+  fra.me.line = 431;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___signature__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:430 */
+  /* syntax/mmbuilder.nit:431 */
   ATTR_syntax___mmbuilder___SignatureBuilder____signature(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2567,6 +2636,7 @@ void syntax___mmbuilder___SignatureBuilder___init(val_t p0, int* init_table){
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___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[itpos8] = 1;
   return;
@@ -2576,15 +2646,16 @@ void syntax___mmbuilder___ANode___accept_class_builder(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 437;
+  fra.me.line = 438;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_class_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:437 */
+  /* syntax/mmbuilder.nit:438 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2594,15 +2665,16 @@ void syntax___mmbuilder___ANode___accept_class_specialization_builder(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 438;
+  fra.me.line = 439;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_class_specialization_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:438 */
+  /* syntax/mmbuilder.nit:439 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2612,15 +2684,16 @@ void syntax___mmbuilder___ANode___accept_class_ancestor_builder(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 439;
+  fra.me.line = 440;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_class_ancestor_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:439 */
+  /* syntax/mmbuilder.nit:440 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2630,15 +2703,16 @@ void syntax___mmbuilder___ANode___accept_class_verifier(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 440;
+  fra.me.line = 441;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_class_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:440 */
+  /* syntax/mmbuilder.nit:441 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2648,15 +2722,16 @@ void syntax___mmbuilder___ANode___accept_property_builder(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 441;
+  fra.me.line = 442;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_property_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:441 */
+  /* syntax/mmbuilder.nit:442 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2666,15 +2741,16 @@ void syntax___mmbuilder___ANode___accept_property_verifier(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 442;
+  fra.me.line = 443;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_property_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:442 */
+  /* syntax/mmbuilder.nit:443 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2689,10 +2765,11 @@ void syntax___mmbuilder___AModule___import_super_modules(val_t p0, val_t p1, val
         static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 446;
+  fra.me.line = 447;
   fra.me.meth = LOCATE_syntax___mmbuilder___AModule___import_super_modules;
   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;
@@ -2701,14 +2778,14 @@ void syntax___mmbuilder___AModule___import_super_modules(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:450 */
+  /* syntax/mmbuilder.nit:451 */
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* ./syntax//mmbuilder.nit:451 */
+  /* syntax/mmbuilder.nit:452 */
   fra.me.REG[4] = NIT_NULL;
-  /* ./syntax//mmbuilder.nit:452 */
+  /* syntax/mmbuilder.nit:453 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AModule___n_imports(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___AModule___import_super_modules_1));
-  /* ./syntax//mmbuilder.nit:462 */
+  /* syntax/mmbuilder.nit:463 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2723,14 +2800,14 @@ void syntax___mmbuilder___AModule___import_super_modules(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:463 */
+    /* syntax/mmbuilder.nit:464 */
     REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:464 */
+      /* syntax/mmbuilder.nit:465 */
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 464);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 465);
       }
       fra.me.REG[4] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[4])(fra.me.REG[4]);
       if (!once_value_2) {
@@ -2741,13 +2818,13 @@ void syntax___mmbuilder___AModule___import_super_modules(val_t p0, val_t p1, val
         register_static_object(&once_value_2);
       } else fra.me.REG[0] = once_value_2;
       fra.me.REG[0] = fra.me.REG[0];
-      CALL_mmloader___ToolContext___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
+      CALL_toolcontext___ToolContext___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
     }
   } else {
-    /* ./syntax//mmbuilder.nit:466 */
+    /* syntax/mmbuilder.nit:467 */
     REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:467 */
+      /* syntax/mmbuilder.nit:468 */
       if (!once_value_3) {
         if (!once_value_4) {
           fra.me.REG[0] = BOX_NativeString("standard");
@@ -2762,16 +2839,16 @@ void syntax___mmbuilder___AModule___import_super_modules(val_t p0, val_t p1, val
         register_static_object(&once_value_3);
       } else fra.me.REG[0] = once_value_3;
       fra.me.REG[0] = fra.me.REG[0];
-      /* ./syntax//mmbuilder.nit:468 */
+      /* syntax/mmbuilder.nit:469 */
       fra.me.REG[0] = CALL_mmloader___ToolContext___get_module(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
-      /* ./syntax//mmbuilder.nit:469 */
+      /* syntax/mmbuilder.nit:470 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
-      /* ./syntax//mmbuilder.nit:470 */
+      /* syntax/mmbuilder.nit:471 */
       REGB0 = TAG_Int(1);
       CALL_metamodel___abstractmetamodel___MMModule___add_super_module(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], REGB0);
     }
   }
-  /* ./syntax//mmbuilder.nit:473 */
+  /* syntax/mmbuilder.nit:474 */
   CALL_metamodel___abstractmetamodel___MMContext___add_module(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2788,15 +2865,16 @@ void syntax___mmbuilder___AModule___import_super_modules(val_t p0, val_t p1, val
     fra.me.meth = LOCATE_syntax___mmbuilder___AModule___import_super_modules;
     fra.me.has_broke = 0;
     fra.me.REG_size = 2;
+    fra.me.nitni_local_ref_head = NULL;
     fra.me.REG[0] = NIT_NULL;
     fra.me.REG[1] = NIT_NULL;
     fra.me.closure_ctx = closctx_param;
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./syntax//mmbuilder.nit:453 */
+    /* syntax/mmbuilder.nit:454 */
     fra.me.REG[1] = CALL_syntax___mmbuilder___AImport___module_name(fra.me.REG[0])(fra.me.REG[0]);
-    /* ./syntax//mmbuilder.nit:454 */
+    /* syntax/mmbuilder.nit:455 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -2811,15 +2889,15 @@ void syntax___mmbuilder___AModule___import_super_modules(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:455 */
+      /* syntax/mmbuilder.nit:456 */
       fra.me.REG[1] = CALL_mmloader___ToolContext___get_module(closctx->REG[1])(closctx->REG[1], fra.me.REG[1], closctx->REG[2]);
-      /* ./syntax//mmbuilder.nit:456 */
+      /* syntax/mmbuilder.nit:457 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[3])(closctx->REG[3], fra.me.REG[1]);
-      /* ./syntax//mmbuilder.nit:457 */
+      /* syntax/mmbuilder.nit:458 */
       REGB0 = CALL_syntax___mmbuilder___AImport___visibility_level(fra.me.REG[0])(fra.me.REG[0]);
       CALL_metamodel___abstractmetamodel___MMModule___add_super_module(closctx->REG[2])(closctx->REG[2], fra.me.REG[1], REGB0);
     } else {
-      /* ./syntax//mmbuilder.nit:459 */
+      /* syntax/mmbuilder.nit:460 */
       closctx->REG[4] = fra.me.REG[0];
     }
     stack_frame_head = fra.me.prev;
@@ -2835,10 +2913,11 @@ void syntax___mmbuilder___AModuledecl___accept_class_builder(val_t p0, val_t p1)
     static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 478;
+  fra.me.line = 479;
   fra.me.meth = LOCATE_syntax___mmbuilder___AModuledecl___accept_class_builder;
   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;
@@ -2846,7 +2925,7 @@ void syntax___mmbuilder___AModuledecl___accept_class_builder(val_t p0, val_t p1)
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:480 */
+  /* syntax/mmbuilder.nit:481 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AModuledecl___n_name(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_parser___parser_nodes___AModuleName___n_id(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[2] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
@@ -2860,7 +2939,7 @@ void syntax___mmbuilder___AModuledecl___accept_class_builder(val_t p0, val_t p1)
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:481 */
+    /* syntax/mmbuilder.nit:482 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AModuledecl___n_name(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[3] = CALL_parser___parser_nodes___AModuleName___n_id(fra.me.REG[3])(fra.me.REG[3]);
     REGB0 = TAG_Int(5);
@@ -2912,12 +2991,13 @@ val_t syntax___mmbuilder___AImport___module_name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 487;
+  fra.me.line = 488;
   fra.me.meth = LOCATE_syntax___mmbuilder___AImport___module_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//mmbuilder.nit:487 */
-  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 487);
+  fra.me.nitni_local_ref_head = NULL;
+  /* syntax/mmbuilder.nit:488 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 488);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -2926,12 +3006,13 @@ val_t syntax___mmbuilder___AImport___visibility_level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 490;
+  fra.me.line = 491;
   fra.me.meth = LOCATE_syntax___mmbuilder___AImport___visibility_level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//mmbuilder.nit:490 */
-  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 490);
+  fra.me.nitni_local_ref_head = NULL;
+  /* syntax/mmbuilder.nit:491 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 491);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -2940,13 +3021,14 @@ val_t syntax___mmbuilder___AStdImport___module_name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 494;
+  fra.me.line = 495;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdImport___module_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:496 */
+  /* syntax/mmbuilder.nit:497 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdImport___n_name(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_parser___parser_nodes___AModuleName___n_id(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
@@ -2961,13 +3043,14 @@ val_t syntax___mmbuilder___AStdImport___visibility_level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 498;
+  fra.me.line = 499;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdImport___visibility_level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:500 */
+  /* syntax/mmbuilder.nit:501 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdImport___n_visibility(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -2980,13 +3063,14 @@ val_t syntax___mmbuilder___ANoImport___module_name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 504;
+  fra.me.line = 505;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANoImport___module_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:506 */
+  /* syntax/mmbuilder.nit:507 */
   fra.me.REG[0] = NIT_NULL;
   goto label1;
   label1: while(0);
@@ -2998,12 +3082,13 @@ val_t syntax___mmbuilder___AVisibility___level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 511;
+  fra.me.line = 512;
   fra.me.meth = LOCATE_syntax___mmbuilder___AVisibility___level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//mmbuilder.nit:511 */
-  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 511);
+  fra.me.nitni_local_ref_head = NULL;
+  /* syntax/mmbuilder.nit:512 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 512);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -3013,13 +3098,14 @@ val_t syntax___mmbuilder___APublicVisibility___level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 515;
+  fra.me.line = 516;
   fra.me.meth = LOCATE_syntax___mmbuilder___APublicVisibility___level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:515 */
+  /* syntax/mmbuilder.nit:516 */
   REGB0 = TAG_Int(1);
   goto label1;
   label1: while(0);
@@ -3032,13 +3118,14 @@ val_t syntax___mmbuilder___AProtectedVisibility___level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 518;
+  fra.me.line = 519;
   fra.me.meth = LOCATE_syntax___mmbuilder___AProtectedVisibility___level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:518 */
+  /* syntax/mmbuilder.nit:519 */
   REGB0 = TAG_Int(2);
   goto label1;
   label1: while(0);
@@ -3051,13 +3138,14 @@ val_t syntax___mmbuilder___APrivateVisibility___level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 521;
+  fra.me.line = 522;
   fra.me.meth = LOCATE_syntax___mmbuilder___APrivateVisibility___level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:521 */
+  /* syntax/mmbuilder.nit:522 */
   REGB0 = TAG_Int(3);
   goto label1;
   label1: while(0);
@@ -3070,13 +3158,14 @@ val_t syntax___mmbuilder___AIntrudeVisibility___level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 524;
+  fra.me.line = 525;
   fra.me.meth = LOCATE_syntax___mmbuilder___AIntrudeVisibility___level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:524 */
+  /* syntax/mmbuilder.nit:525 */
   REGB0 = TAG_Int(0);
   goto label1;
   label1: while(0);
@@ -3089,20 +3178,21 @@ val_t syntax___mmbuilder___AClassdef___local_class(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 529;
+  fra.me.line = 530;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___local_class;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:529 */
+  /* syntax/mmbuilder.nit:530 */
   fra.me.REG[1] = fra.me.REG[0];
   fra.me.REG[1] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 529);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 530);
   }
   goto label1;
   label1: while(0);
@@ -3114,12 +3204,13 @@ val_t syntax___mmbuilder___AClassdef___name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 532;
+  fra.me.line = 533;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//mmbuilder.nit:532 */
-  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 532);
+  fra.me.nitni_local_ref_head = NULL;
+  /* syntax/mmbuilder.nit:533 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 533);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -3129,13 +3220,14 @@ val_t syntax___mmbuilder___AClassdef___arity(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 535;
+  fra.me.line = 536;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___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;
-  /* ./syntax//mmbuilder.nit:536 */
+  /* syntax/mmbuilder.nit:537 */
   REGB0 = TAG_Int(0);
   goto label1;
   label1: while(0);
@@ -3148,13 +3240,14 @@ val_t syntax___mmbuilder___AClassdef___visibility_level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 538;
+  fra.me.line = 539;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___visibility_level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:539 */
+  /* syntax/mmbuilder.nit:540 */
   REGB0 = TAG_Int(1);
   goto label1;
   label1: while(0);
@@ -3171,10 +3264,11 @@ void syntax___mmbuilder___AClassdef___accept_class_builder(val_t p0, val_t p1){
       static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 541;
+  fra.me.line = 542;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___accept_class_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -3186,26 +3280,26 @@ void syntax___mmbuilder___AClassdef___accept_class_builder(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:541 */
+  /* syntax/mmbuilder.nit:542 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:544 */
+  /* syntax/mmbuilder.nit:545 */
   fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:545 */
+  /* syntax/mmbuilder.nit:546 */
   fra.me.REG[5] = CALL_syntax___syntax_base___MMSrcModule___src_local_classes(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:546 */
+  /* syntax/mmbuilder.nit:547 */
   fra.me.REG[6] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:547 */
+    /* syntax/mmbuilder.nit:548 */
     fra.me.REG[6] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[6] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-    /* ./syntax//mmbuilder.nit:548 */
+    /* syntax/mmbuilder.nit:549 */
     ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]) = fra.me.REG[6];
-    /* ./syntax//mmbuilder.nit:549 */
+    /* syntax/mmbuilder.nit:550 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AStdClassdef, ID_parser___parser_nodes___AStdClassdef)) /*cast AStdClassdef*/;
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:551 */
+      /* syntax/mmbuilder.nit:552 */
       REGB0 = TAG_Int(5);
       fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_1) {
@@ -3232,7 +3326,7 @@ void syntax___mmbuilder___AClassdef___accept_class_builder(val_t p0, val_t p1){
       fra.me.REG[8] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[6])(fra.me.REG[6]);
       REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 551);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 552);
       }
       fra.me.REG[8] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[8])(fra.me.REG[8]);
       REGB0 = CALL_location___Location___line_start(fra.me.REG[8])(fra.me.REG[8]);
@@ -3249,16 +3343,16 @@ void syntax___mmbuilder___AClassdef___accept_class_builder(val_t p0, val_t p1){
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
       fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
       CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
-      /* ./syntax//mmbuilder.nit:552 */
+      /* syntax/mmbuilder.nit:553 */
       goto label4;
     }
-    /* ./syntax//mmbuilder.nit:555 */
+    /* syntax/mmbuilder.nit:556 */
     fra.me.REG[7] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[6])(fra.me.REG[6]);
-    /* ./syntax//mmbuilder.nit:556 */
+    /* syntax/mmbuilder.nit:557 */
     while(1) {
       REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 556);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 557);
       }
       fra.me.REG[8] = CALL_syntax___syntax_base___AClassdef___next_node(fra.me.REG[7])(fra.me.REG[7]);
       REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
@@ -3277,7 +3371,7 @@ void syntax___mmbuilder___AClassdef___accept_class_builder(val_t p0, val_t p1){
       if (UNTAG_Bool(REGB0)) {
         REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 556);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 557);
         }
         fra.me.REG[8] = CALL_syntax___syntax_base___AClassdef___next_node(fra.me.REG[7])(fra.me.REG[7]);
         fra.me.REG[7] = fra.me.REG[8];
@@ -3286,47 +3380,47 @@ void syntax___mmbuilder___AClassdef___accept_class_builder(val_t p0, val_t p1){
       }
     }
     label5: while(0);
-    /* ./syntax//mmbuilder.nit:557 */
+    /* syntax/mmbuilder.nit:558 */
     REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 557);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 558);
     }
     CALL_syntax___syntax_base___AClassdef___next_node__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
   } else {
-    /* ./syntax//mmbuilder.nit:559 */
+    /* syntax/mmbuilder.nit:560 */
     fra.me.REG[7] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = CALL_syntax___mmbuilder___AClassdef___arity(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[7] = NEW_MMSrcLocalClass_syntax___syntax_base___MMSrcLocalClass___init(fra.me.REG[4], fra.me.REG[7], fra.me.REG[2], REGB0);
     fra.me.REG[6] = fra.me.REG[7];
-    /* ./syntax//mmbuilder.nit:560 */
+    /* syntax/mmbuilder.nit:561 */
     ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]) = fra.me.REG[6];
-    /* ./syntax//mmbuilder.nit:561 */
+    /* syntax/mmbuilder.nit:562 */
     fra.me.REG[7] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
     CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7], fra.me.REG[6]);
-    /* ./syntax//mmbuilder.nit:562 */
+    /* syntax/mmbuilder.nit:563 */
     fra.me.REG[7] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:563 */
+      /* syntax/mmbuilder.nit:564 */
       CALL_syntax___mmbuilder___AClassdef___build_class_introduction(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
     } else {
-      /* ./syntax//mmbuilder.nit:565 */
+      /* syntax/mmbuilder.nit:566 */
       fra.me.REG[7] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMModule___global_class_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
-      /* ./syntax//mmbuilder.nit:566 */
+      /* syntax/mmbuilder.nit:567 */
       CALL_syntax___mmbuilder___AClassdef___build_class_refinement(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[7]);
     }
   }
-  /* ./syntax//mmbuilder.nit:570 */
+  /* syntax/mmbuilder.nit:571 */
   REGB0 = TAG_Int(0);
   CALL_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
-  /* ./syntax//mmbuilder.nit:571 */
+  /* syntax/mmbuilder.nit:572 */
   fra.me.REG[6] = CALL_syntax___syntax_base___MMSrcLocalClass___formal_dict(fra.me.REG[6])(fra.me.REG[6]);
   CALL_syntax___mmbuilder___ClassBuilderVisitor___formals__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-  /* ./syntax//mmbuilder.nit:574 */
+  /* syntax/mmbuilder.nit:575 */
   CALL_SUPER_syntax___mmbuilder___AClassdef___accept_class_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:577 */
+  /* syntax/mmbuilder.nit:578 */
   CALL_syntax___mmbuilder___ClassBuilderVisitor___formals__eq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
   label4: while(0);
   stack_frame_head = fra.me.prev;
@@ -3341,10 +3435,11 @@ void syntax___mmbuilder___AClassdef___build_class_introduction(val_t p0, val_t p
       static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 580;
+  fra.me.line = 581;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___build_class_introduction;
   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;
@@ -3352,19 +3447,19 @@ void syntax___mmbuilder___AClassdef___build_class_introduction(val_t p0, val_t p
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:582 */
+  /* syntax/mmbuilder.nit:583 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[0])(fra.me.REG[0]);
   CALL_metamodel___abstractmetamodel___MMLocalClass___new_global(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:583 */
+  /* syntax/mmbuilder.nit:584 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:585 */
+  /* syntax/mmbuilder.nit:586 */
   REGB0 = CALL_syntax___mmbuilder___AClassdef___visibility_level(fra.me.REG[0])(fra.me.REG[0]);
   CALL_metamodel___abstractmetamodel___MMGlobalClass___visibility_level__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
-  /* ./syntax//mmbuilder.nit:586 */
+  /* syntax/mmbuilder.nit:587 */
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AStdClassdef, ID_parser___parser_nodes___AStdClassdef)) /*cast AStdClassdef*/;
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:587 */
+    /* syntax/mmbuilder.nit:588 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_kwredef(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -3380,7 +3475,7 @@ void syntax___mmbuilder___AClassdef___build_class_introduction(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:588 */
+      /* syntax/mmbuilder.nit:589 */
       REGB0 = TAG_Int(3);
       fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_1) {
@@ -3406,18 +3501,18 @@ void syntax___mmbuilder___AClassdef___build_class_introduction(val_t p0, val_t p
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
       fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
       CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
-      /* ./syntax//mmbuilder.nit:589 */
+      /* syntax/mmbuilder.nit:590 */
       goto label3;
     }
-    /* ./syntax//mmbuilder.nit:591 */
+    /* syntax/mmbuilder.nit:592 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = CALL_syntax___mmbuilder___AClasskind___is_interface(fra.me.REG[3])(fra.me.REG[3]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
-    /* ./syntax//mmbuilder.nit:592 */
+    /* syntax/mmbuilder.nit:593 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = CALL_syntax___mmbuilder___AClasskind___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
-    /* ./syntax//mmbuilder.nit:593 */
+    /* syntax/mmbuilder.nit:594 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = CALL_syntax___mmbuilder___AClasskind___is_enum(fra.me.REG[0])(fra.me.REG[0]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
@@ -3441,10 +3536,11 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     static val_t once_value_8; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 597;
+  fra.me.line = 598;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___build_class_refinement;
   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;
@@ -3453,13 +3549,13 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:599 */
+  /* syntax/mmbuilder.nit:600 */
   fra.me.REG[3] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[0])(fra.me.REG[0]);
   CALL_metamodel___abstractmetamodel___MMLocalClass___set_global(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:601 */
+  /* syntax/mmbuilder.nit:602 */
   fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
   CALL_syntax___syntax_base___MMGlobalClass___check_visibility(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:602 */
+  /* syntax/mmbuilder.nit:603 */
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AStdClassdef, ID_parser___parser_nodes___AStdClassdef)) /*cast AStdClassdef*/;
   if (UNTAG_Bool(REGB0)) {
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_kwredef(fra.me.REG[0])(fra.me.REG[0]);
@@ -3480,7 +3576,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:603 */
+    /* syntax/mmbuilder.nit:604 */
     REGB0 = TAG_Int(3);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -3506,29 +3602,29 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
     fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
-    /* ./syntax//mmbuilder.nit:604 */
+    /* syntax/mmbuilder.nit:605 */
     goto label3;
   }
-  /* ./syntax//mmbuilder.nit:607 */
+  /* syntax/mmbuilder.nit:608 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[3] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[0]);
   REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 607);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 608);
   }
   REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[3])(fra.me.REG[3]);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ../lib/standard/kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ./syntax//mmbuilder.nit:607 */
+    /* syntax/mmbuilder.nit:608 */
     REGB2 = REGB1;
   }
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:608 */
+    /* syntax/mmbuilder.nit:609 */
     REGB2 = TAG_Int(5);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
     if (!once_value_4) {
@@ -3543,7 +3639,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     fra.me.REG[4] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[0]);
     REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 608);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 609);
     }
     REGB2 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
@@ -3573,7 +3669,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
   }
-  /* ./syntax//mmbuilder.nit:611 */
+  /* syntax/mmbuilder.nit:612 */
   REGB2 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AStdClassdef, ID_parser___parser_nodes___AStdClassdef)) /*cast AStdClassdef*/;
   if (UNTAG_Bool(REGB2)) {
     REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[2])(fra.me.REG[2]);
@@ -3588,36 +3684,36 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(true);
     } else {
-      /* ./syntax//mmbuilder.nit:612 */
+      /* syntax/mmbuilder.nit:613 */
       REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[2])(fra.me.REG[2]);
       REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-      /* ./syntax//mmbuilder.nit:611 */
+      /* syntax/mmbuilder.nit:612 */
       REGB2 = REGB1;
     }
     if (UNTAG_Bool(REGB2)) {
-      /* ./syntax//mmbuilder.nit:612 */
+      /* syntax/mmbuilder.nit:613 */
       fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[0])(fra.me.REG[0]);
       REGB2 = CALL_syntax___mmbuilder___AClasskind___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
     } else {
-      /* ./syntax//mmbuilder.nit:611 */
+      /* syntax/mmbuilder.nit:612 */
       REGB1 = TAG_Bool(false);
       REGB2 = REGB1;
     }
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(true);
     } else {
-      /* ./syntax//mmbuilder.nit:613 */
+      /* syntax/mmbuilder.nit:614 */
       REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[2])(fra.me.REG[2]);
       REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-      /* ./syntax//mmbuilder.nit:611 */
+      /* syntax/mmbuilder.nit:612 */
       REGB2 = REGB1;
     }
     if (UNTAG_Bool(REGB2)) {
-      /* ./syntax//mmbuilder.nit:613 */
+      /* syntax/mmbuilder.nit:614 */
       fra.me.REG[2] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[0])(fra.me.REG[0]);
       REGB2 = CALL_syntax___mmbuilder___AClasskind___is_enum(fra.me.REG[2])(fra.me.REG[2]);
     } else {
-      /* ./syntax//mmbuilder.nit:611 */
+      /* syntax/mmbuilder.nit:612 */
       REGB1 = TAG_Bool(false);
       REGB2 = REGB1;
     }
@@ -3626,7 +3722,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:615 */
+    /* syntax/mmbuilder.nit:616 */
     REGB2 = TAG_Int(3);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
     if (!once_value_7) {
@@ -3677,10 +3773,11 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
             static val_t once_value_12; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 619;
+  fra.me.line = 620;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___accept_class_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -3692,44 +3789,44 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:619 */
+  /* syntax/mmbuilder.nit:620 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:621 */
+  /* syntax/mmbuilder.nit:622 */
   CALL_SUPER_syntax___mmbuilder___AClassdef___accept_class_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:622 */
+  /* syntax/mmbuilder.nit:623 */
   fra.me.REG[1] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 622);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 623);
   }
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:623 */
+  /* syntax/mmbuilder.nit:624 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 623);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 624);
   }
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:232 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:233 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -3737,26 +3834,26 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:624 */
+      /* syntax/mmbuilder.nit:625 */
       fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
-      /* ./syntax//mmbuilder.nit:625 */
+      /* syntax/mmbuilder.nit:626 */
       REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[1])(fra.me.REG[1]);
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:626 */
+        /* syntax/mmbuilder.nit:627 */
         REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[6])(fra.me.REG[6]);
         if (UNTAG_Bool(REGB1)) {
-          /* ./syntax//mmbuilder.nit:627 */
+          /* syntax/mmbuilder.nit:628 */
           REGB1 = TAG_Int(5);
           fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
           if (!once_value_1) {
@@ -3795,11 +3892,11 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
           fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
           CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
         } else {
-          /* ./syntax//mmbuilder.nit:628 */
+          /* syntax/mmbuilder.nit:629 */
           REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[6])(fra.me.REG[6]);
           REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
           if (UNTAG_Bool(REGB1)) {
-            /* ./syntax//mmbuilder.nit:629 */
+            /* syntax/mmbuilder.nit:630 */
             REGB1 = TAG_Int(5);
             fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_4) {
@@ -3840,10 +3937,10 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
           }
         }
       } else {
-        /* ./syntax//mmbuilder.nit:631 */
+        /* syntax/mmbuilder.nit:632 */
         REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[1])(fra.me.REG[1]);
         if (UNTAG_Bool(REGB1)) {
-          /* ./syntax//mmbuilder.nit:632 */
+          /* syntax/mmbuilder.nit:633 */
           REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[6])(fra.me.REG[6]);
           REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
           if (UNTAG_Bool(REGB1)) {
@@ -3854,7 +3951,7 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
             REGB1 = REGB2;
           }
           if (UNTAG_Bool(REGB1)) {
-            /* ./syntax//mmbuilder.nit:633 */
+            /* syntax/mmbuilder.nit:634 */
             REGB1 = TAG_Int(5);
             fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_7) {
@@ -3894,10 +3991,10 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
             CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
           }
         } else {
-          /* ./syntax//mmbuilder.nit:636 */
+          /* syntax/mmbuilder.nit:637 */
           REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[6])(fra.me.REG[6]);
           if (UNTAG_Bool(REGB1)) {
-            /* ./syntax//mmbuilder.nit:637 */
+            /* syntax/mmbuilder.nit:638 */
             REGB1 = TAG_Int(5);
             fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_10) {
@@ -3938,14 +4035,14 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
           }
         }
       }
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label13;
     }
   }
@@ -3958,25 +4055,26 @@ void syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 644;
+  fra.me.line = 645;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:644 */
+  /* syntax/mmbuilder.nit:645 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:646 */
+  /* syntax/mmbuilder.nit:647 */
   fra.me.REG[2] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
   CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:647 */
+  /* syntax/mmbuilder.nit:648 */
   CALL_SUPER_syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:648 */
+  /* syntax/mmbuilder.nit:649 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class__eq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
   stack_frame_head = fra.me.prev;
   return;
@@ -3987,13 +4085,14 @@ val_t syntax___mmbuilder___AClasskind___is_interface(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 653;
+  fra.me.line = 654;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClasskind___is_interface;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:653 */
+  /* syntax/mmbuilder.nit:654 */
   REGB0 = TAG_Bool(false);
   goto label1;
   label1: while(0);
@@ -4006,13 +4105,14 @@ val_t syntax___mmbuilder___AClasskind___is_enum(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 654;
+  fra.me.line = 655;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClasskind___is_enum;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:654 */
+  /* syntax/mmbuilder.nit:655 */
   REGB0 = TAG_Bool(false);
   goto label1;
   label1: while(0);
@@ -4025,13 +4125,34 @@ val_t syntax___mmbuilder___AClasskind___is_abstract(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 655;
+  fra.me.line = 656;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClasskind___is_abstract;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* syntax/mmbuilder.nit:656 */
+  REGB0 = TAG_Bool(false);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t syntax___mmbuilder___AClasskind___is_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_syntax___mmbuilder;
+  fra.me.line = 657;
+  fra.me.meth = LOCATE_syntax___mmbuilder___AClasskind___is_extern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:655 */
+  /* syntax/mmbuilder.nit:657 */
   REGB0 = TAG_Bool(false);
   goto label1;
   label1: while(0);
@@ -4044,13 +4165,14 @@ val_t syntax___mmbuilder___AInterfaceClasskind___is_interface(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 659;
+  fra.me.line = 661;
   fra.me.meth = LOCATE_syntax___mmbuilder___AInterfaceClasskind___is_interface;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:659 */
+  /* syntax/mmbuilder.nit:661 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -4063,13 +4185,34 @@ val_t syntax___mmbuilder___AEnumClasskind___is_enum(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 662;
+  fra.me.line = 664;
   fra.me.meth = LOCATE_syntax___mmbuilder___AEnumClasskind___is_enum;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* syntax/mmbuilder.nit:664 */
+  REGB0 = TAG_Bool(true);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t syntax___mmbuilder___AExternClasskind___is_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_syntax___mmbuilder;
+  fra.me.line = 667;
+  fra.me.meth = LOCATE_syntax___mmbuilder___AExternClasskind___is_extern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:662 */
+  /* syntax/mmbuilder.nit:667 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -4082,13 +4225,14 @@ val_t syntax___mmbuilder___AAbstractClasskind___is_abstract(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 665;
+  fra.me.line = 670;
   fra.me.meth = LOCATE_syntax___mmbuilder___AAbstractClasskind___is_abstract;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:665 */
+  /* syntax/mmbuilder.nit:670 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -4101,17 +4245,18 @@ val_t syntax___mmbuilder___AStdClassdef___name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 669;
+  fra.me.line = 674;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdClassdef___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:671 */
+  /* syntax/mmbuilder.nit:676 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_id(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 671);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 676);
   }
   fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -4125,13 +4270,14 @@ val_t syntax___mmbuilder___AStdClassdef___arity(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 673;
+  fra.me.line = 678;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdClassdef___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;
-  /* ./syntax//mmbuilder.nit:675 */
+  /* syntax/mmbuilder.nit:680 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_formaldefs(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -4139,6 +4285,64 @@ val_t syntax___mmbuilder___AStdClassdef___arity(val_t p0){
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+void syntax___mmbuilder___AStdClassdef___accept_class_specialization_builder(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax___mmbuilder;
+  fra.me.line = 682;
+  fra.me.meth = LOCATE_syntax___mmbuilder___AStdClassdef___accept_class_specialization_builder;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* syntax/mmbuilder.nit:682 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* syntax/mmbuilder.nit:684 */
+  CALL_SUPER_syntax___mmbuilder___AStdClassdef___accept_class_specialization_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* syntax/mmbuilder.nit:686 */
+  fra.me.REG[1] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
+  /* syntax/mmbuilder.nit:687 */
+  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[3] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[3]));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* syntax/mmbuilder.nit:688 */
+    fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = CALL_syntax___mmbuilder___AClasskind___is_interface(fra.me.REG[3])(fra.me.REG[3]);
+    CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
+    /* syntax/mmbuilder.nit:689 */
+    fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = CALL_syntax___mmbuilder___AClasskind___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
+    CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
+    /* syntax/mmbuilder.nit:690 */
+    fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = CALL_syntax___mmbuilder___AClasskind___is_enum(fra.me.REG[3])(fra.me.REG[3]);
+    CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
+    /* syntax/mmbuilder.nit:691 */
+    fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = CALL_syntax___mmbuilder___AClasskind___is_extern(fra.me.REG[3])(fra.me.REG[3]);
+    CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
+    /* syntax/mmbuilder.nit:692 */
+    REGB0 = CALL_syntax___mmbuilder___AClassdef___visibility_level(fra.me.REG[2])(fra.me.REG[2]);
+    CALL_metamodel___abstractmetamodel___MMGlobalClass___visibility_level__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
 void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
   val_t REGB0;
@@ -4156,22 +4360,29 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
               static val_t once_value_9; /* Once value */
               static val_t once_value_10; /* Once value */
               static val_t once_value_11; /* Once value */
-              static val_t once_value_12; /* Once value */
-              static val_t once_value_13; /* Once value */
-              static val_t once_value_14; /* Once value */
-    static val_t once_value_17; /* Once value */
-    static val_t once_value_18; /* Once value */
-    static val_t once_value_19; /* Once value */
-    static val_t once_value_20; /* Once value */
-    static val_t once_value_21; /* Once value */
-    static val_t once_value_22; /* Once value */
+               static val_t once_value_12; /* Once value */
+               static val_t once_value_13; /* Once value */
+               static val_t once_value_14; /* Once value */
+               static val_t once_value_15; /* Once value */
+               static val_t once_value_16; /* Once value */
+               static val_t once_value_17; /* Once value */
+               static val_t once_value_18; /* Once value */
+               static val_t once_value_19; /* Once value */
+               static val_t once_value_20; /* Once value */
     static val_t once_value_23; /* Once value */
+    static val_t once_value_24; /* Once value */
+    static val_t once_value_25; /* Once value */
+    static val_t once_value_26; /* Once value */
+    static val_t once_value_27; /* Once value */
+    static val_t once_value_28; /* Once value */
+    static val_t once_value_29; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 677;
+  fra.me.line = 695;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdClassdef___accept_class_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -4183,19 +4394,19 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:677 */
+  /* syntax/mmbuilder.nit:695 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:679 */
+  /* syntax/mmbuilder.nit:697 */
   CALL_SUPER_syntax___mmbuilder___AStdClassdef___accept_class_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:680 */
+  /* syntax/mmbuilder.nit:698 */
   fra.me.REG[1] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 680);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 698);
   }
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:681 */
+  /* syntax/mmbuilder.nit:699 */
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[4] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[4]));
@@ -4205,22 +4416,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:683 */
-    REGB0 = CALL_syntax___mmbuilder___AClassdef___visibility_level(fra.me.REG[2])(fra.me.REG[2]);
-    CALL_metamodel___abstractmetamodel___MMGlobalClass___visibility_level__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    /* ./syntax//mmbuilder.nit:684 */
-    fra.me.REG[4] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
-    REGB0 = CALL_syntax___mmbuilder___AClasskind___is_interface(fra.me.REG[4])(fra.me.REG[4]);
-    CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    /* ./syntax//mmbuilder.nit:685 */
-    fra.me.REG[4] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
-    REGB0 = CALL_syntax___mmbuilder___AClasskind___is_abstract(fra.me.REG[4])(fra.me.REG[4]);
-    CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    /* ./syntax//mmbuilder.nit:686 */
-    fra.me.REG[4] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
-    REGB0 = CALL_syntax___mmbuilder___AClasskind___is_enum(fra.me.REG[4])(fra.me.REG[4]);
-    CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    /* ./syntax//mmbuilder.nit:687 */
+    /* syntax/mmbuilder.nit:701 */
     fra.me.REG[4] = CALL_parser___parser_nodes___AStdClassdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -4236,7 +4432,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:688 */
+      /* syntax/mmbuilder.nit:702 */
       REGB0 = TAG_Int(3);
       fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_1) {
@@ -4263,32 +4459,40 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
       fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
       CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
     }
-    /* ./syntax//mmbuilder.nit:691 */
+    /* syntax/mmbuilder.nit:704 */
+    REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[1])(fra.me.REG[1]);
+    if (UNTAG_Bool(REGB0)) {
+      /* syntax/mmbuilder.nit:705 */
+      fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalClass___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
+      REGB0 = TAG_Bool(true);
+      CALL_metamodel___abstractmetamodel___MMModule___is_extern_hybrid__eq(fra.me.REG[4])(fra.me.REG[4], REGB0);
+    }
+    /* syntax/mmbuilder.nit:708 */
     fra.me.REG[4] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 691);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 708);
     }
     fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[4])(fra.me.REG[4]);
-    /* ./../lib/standard//collection//array.nit:232 */
+    /* ../lib/standard/collection/array.nit:269 */
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:233 */
+    /* ../lib/standard/collection/array.nit:270 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./../lib/standard//collection//array.nit:234 */
+    /* ../lib/standard/collection/array.nit:271 */
     fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
       REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -4296,26 +4500,26 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ./../lib/standard//kernel.nit:215 */
+      /* ../lib/standard/kernel.nit:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:236 */
+        /* ../lib/standard/collection/array.nit:273 */
         REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:652 */
+        /* ../lib/standard/collection/array.nit:718 */
         fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-        /* ./syntax//mmbuilder.nit:692 */
+        /* syntax/mmbuilder.nit:709 */
         fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
-        /* ./syntax//mmbuilder.nit:693 */
+        /* syntax/mmbuilder.nit:710 */
         REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[1])(fra.me.REG[1]);
         if (UNTAG_Bool(REGB1)) {
-          /* ./syntax//mmbuilder.nit:694 */
+          /* syntax/mmbuilder.nit:711 */
           REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[6])(fra.me.REG[6]);
           if (UNTAG_Bool(REGB1)) {
-            /* ./syntax//mmbuilder.nit:695 */
+            /* syntax/mmbuilder.nit:712 */
             REGB1 = TAG_Int(5);
             fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_3) {
@@ -4354,11 +4558,11 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
             fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
             CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
           } else {
-            /* ./syntax//mmbuilder.nit:696 */
+            /* syntax/mmbuilder.nit:713 */
             REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[6])(fra.me.REG[6]);
             REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
             if (UNTAG_Bool(REGB1)) {
-              /* ./syntax//mmbuilder.nit:697 */
+              /* syntax/mmbuilder.nit:714 */
               REGB1 = TAG_Int(5);
               fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
               if (!once_value_6) {
@@ -4399,10 +4603,10 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
             }
           }
         } else {
-          /* ./syntax//mmbuilder.nit:699 */
+          /* syntax/mmbuilder.nit:716 */
           REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[1])(fra.me.REG[1]);
           if (UNTAG_Bool(REGB1)) {
-            /* ./syntax//mmbuilder.nit:700 */
+            /* syntax/mmbuilder.nit:717 */
             REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[6])(fra.me.REG[6]);
             REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
             if (UNTAG_Bool(REGB1)) {
@@ -4413,7 +4617,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
               REGB1 = REGB2;
             }
             if (UNTAG_Bool(REGB1)) {
-              /* ./syntax//mmbuilder.nit:701 */
+              /* syntax/mmbuilder.nit:718 */
               REGB1 = TAG_Int(5);
               fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
               if (!once_value_9) {
@@ -4453,69 +4657,167 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
               CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
             }
           } else {
-            /* ./syntax//mmbuilder.nit:704 */
-            REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[6])(fra.me.REG[6]);
+            /* syntax/mmbuilder.nit:720 */
+            REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[1])(fra.me.REG[1]);
             if (UNTAG_Bool(REGB1)) {
-              /* ./syntax//mmbuilder.nit:705 */
-              REGB1 = TAG_Int(5);
-              fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-              if (!once_value_12) {
+              /* syntax/mmbuilder.nit:721 */
+              REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[6])(fra.me.REG[6]);
+              REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+              if (UNTAG_Bool(REGB1)) {
+               REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[6])(fra.me.REG[6]);
+               REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+              } else {
+               REGB2 = TAG_Bool(false);
+               REGB1 = REGB2;
+              }
+              if (UNTAG_Bool(REGB1)) {
+               /* syntax/mmbuilder.nit:722 */
+               REGB1 = TAG_Int(5);
+               fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+               if (!once_value_12) {
+               fra.me.REG[8] = BOX_NativeString("Special error: Extern class ");
+               REGB1 = TAG_Int(28);
+               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               once_value_12 = fra.me.REG[8];
+               register_static_object(&once_value_12);
+               } else fra.me.REG[8] = once_value_12;
+               fra.me.REG[8] = fra.me.REG[8];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+               fra.me.REG[8] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
+               fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+               if (!once_value_13) {
+               fra.me.REG[8] = BOX_NativeString(" try to specialise class ");
+               REGB1 = TAG_Int(25);
+               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               once_value_13 = fra.me.REG[8];
+               register_static_object(&once_value_13);
+               } else fra.me.REG[8] = once_value_13;
+               fra.me.REG[8] = fra.me.REG[8];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+               fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[5])(fra.me.REG[5]);
+               fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+               if (!once_value_14) {
+               fra.me.REG[8] = BOX_NativeString(".");
+               REGB1 = TAG_Int(1);
+               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               once_value_14 = fra.me.REG[8];
+               register_static_object(&once_value_14);
+               } else fra.me.REG[8] = once_value_14;
+               fra.me.REG[8] = fra.me.REG[8];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+               fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
+               CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
+              }
+            } else {
+              /* syntax/mmbuilder.nit:725 */
+              REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[6])(fra.me.REG[6]);
+              if (UNTAG_Bool(REGB1)) {
+               /* syntax/mmbuilder.nit:726 */
+               REGB1 = TAG_Int(5);
+               fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+               if (!once_value_15) {
+               fra.me.REG[8] = BOX_NativeString("Special error: Class ");
+               REGB1 = TAG_Int(21);
+               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               once_value_15 = fra.me.REG[8];
+               register_static_object(&once_value_15);
+               } else fra.me.REG[8] = once_value_15;
+               fra.me.REG[8] = fra.me.REG[8];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+               fra.me.REG[8] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
+               fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+               if (!once_value_16) {
+               fra.me.REG[8] = BOX_NativeString(" try to specialise enum class ");
+               REGB1 = TAG_Int(30);
+               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               once_value_16 = fra.me.REG[8];
+               register_static_object(&once_value_16);
+               } else fra.me.REG[8] = once_value_16;
+               fra.me.REG[8] = fra.me.REG[8];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+               fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[5])(fra.me.REG[5]);
+               fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+               if (!once_value_17) {
+               fra.me.REG[8] = BOX_NativeString(".");
+               REGB1 = TAG_Int(1);
+               fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+               once_value_17 = fra.me.REG[8];
+               register_static_object(&once_value_17);
+               } else fra.me.REG[8] = once_value_17;
+               fra.me.REG[8] = fra.me.REG[8];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+               fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
+               CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
+              } else {
+               /* syntax/mmbuilder.nit:727 */
+               REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[6])(fra.me.REG[6]);
+               if (UNTAG_Bool(REGB1)) {
+               /* syntax/mmbuilder.nit:728 */
+               REGB1 = TAG_Int(5);
+               fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+               if (!once_value_18) {
                fra.me.REG[7] = BOX_NativeString("Special error: Class ");
                REGB1 = TAG_Int(21);
                fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
-               once_value_12 = fra.me.REG[7];
-               register_static_object(&once_value_12);
-              } else fra.me.REG[7] = once_value_12;
-              fra.me.REG[7] = fra.me.REG[7];
-              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
-              fra.me.REG[7] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
-              fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
-              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
-              if (!once_value_13) {
-               fra.me.REG[7] = BOX_NativeString(" try to specialise enum class ");
-               REGB1 = TAG_Int(30);
+               once_value_18 = fra.me.REG[7];
+               register_static_object(&once_value_18);
+               } else fra.me.REG[7] = once_value_18;
+               fra.me.REG[7] = fra.me.REG[7];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+               fra.me.REG[7] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
+               fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+               if (!once_value_19) {
+               fra.me.REG[7] = BOX_NativeString(" try to specialise extern class ");
+               REGB1 = TAG_Int(32);
                fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
-               once_value_13 = fra.me.REG[7];
-               register_static_object(&once_value_13);
-              } else fra.me.REG[7] = once_value_13;
-              fra.me.REG[7] = fra.me.REG[7];
-              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
-              fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[5])(fra.me.REG[5]);
-              fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
-              if (!once_value_14) {
+               once_value_19 = fra.me.REG[7];
+               register_static_object(&once_value_19);
+               } else fra.me.REG[7] = once_value_19;
+               fra.me.REG[7] = fra.me.REG[7];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+               fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[5])(fra.me.REG[5]);
+               fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+               if (!once_value_20) {
                fra.me.REG[5] = BOX_NativeString(".");
                REGB1 = TAG_Int(1);
                fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
-               once_value_14 = fra.me.REG[5];
-               register_static_object(&once_value_14);
-              } else fra.me.REG[5] = once_value_14;
-              fra.me.REG[5] = fra.me.REG[5];
-              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
-              fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
-              CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[6]);
+               once_value_20 = fra.me.REG[5];
+               register_static_object(&once_value_20);
+               } else fra.me.REG[5] = once_value_20;
+               fra.me.REG[5] = fra.me.REG[5];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+               fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+               CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[6]);
+               }
+              }
             }
           }
         }
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ../lib/standard/kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//collection//array.nit:235 */
-        goto label15;
+        /* ../lib/standard/collection/array.nit:272 */
+        goto label21;
       }
     }
-    label15: while(0);
-    /* ./syntax//mmbuilder.nit:710 */
-    goto label16;
+    label21: while(0);
+    /* syntax/mmbuilder.nit:733 */
+    goto label22;
   }
-  /* ./syntax//mmbuilder.nit:715 */
+  /* syntax/mmbuilder.nit:738 */
   fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
   CALL_syntax___syntax_base___MMGlobalClass___check_visibility(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2], fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:716 */
+  /* syntax/mmbuilder.nit:739 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -4530,100 +4832,100 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:717 */
+    /* syntax/mmbuilder.nit:740 */
     REGB0 = TAG_Int(3);
     fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-    if (!once_value_17) {
+    if (!once_value_23) {
       fra.me.REG[4] = BOX_NativeString("Redef error: ");
       REGB0 = TAG_Int(13);
       fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-      once_value_17 = fra.me.REG[4];
-      register_static_object(&once_value_17);
-    } else fra.me.REG[4] = once_value_17;
+      once_value_23 = fra.me.REG[4];
+      register_static_object(&once_value_23);
+    } else fra.me.REG[4] = once_value_23;
     fra.me.REG[4] = fra.me.REG[4];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     fra.me.REG[4] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-    if (!once_value_18) {
+    if (!once_value_24) {
       fra.me.REG[4] = BOX_NativeString(" is an imported class. Add the redef keyword to refine it.");
       REGB0 = TAG_Int(58);
       fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-      once_value_18 = fra.me.REG[4];
-      register_static_object(&once_value_18);
-    } else fra.me.REG[4] = once_value_18;
+      once_value_24 = fra.me.REG[4];
+      register_static_object(&once_value_24);
+    } else fra.me.REG[4] = once_value_24;
     fra.me.REG[4] = fra.me.REG[4];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[0]);
-    /* ./syntax//mmbuilder.nit:718 */
-    goto label16;
+    /* syntax/mmbuilder.nit:741 */
+    goto label22;
   }
-  /* ./syntax//mmbuilder.nit:721 */
+  /* syntax/mmbuilder.nit:744 */
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 721);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 744);
   }
   REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[0])(fra.me.REG[0]);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ../lib/standard/kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ./syntax//mmbuilder.nit:721 */
+    /* syntax/mmbuilder.nit:744 */
     REGB2 = REGB1;
   }
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:722 */
+    /* syntax/mmbuilder.nit:745 */
     REGB2 = TAG_Int(5);
     fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
-    if (!once_value_19) {
+    if (!once_value_25) {
       fra.me.REG[4] = BOX_NativeString("Redef error: Formal parameter arity mismatch; got ");
       REGB2 = TAG_Int(50);
       fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-      once_value_19 = fra.me.REG[4];
-      register_static_object(&once_value_19);
-    } else fra.me.REG[4] = once_value_19;
+      once_value_25 = fra.me.REG[4];
+      register_static_object(&once_value_25);
+    } else fra.me.REG[4] = once_value_25;
     fra.me.REG[4] = fra.me.REG[4];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     fra.me.REG[4] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
     REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 722);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 745);
     }
     REGB2 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-    if (!once_value_20) {
+    if (!once_value_26) {
       fra.me.REG[4] = BOX_NativeString(", expected ");
       REGB2 = TAG_Int(11);
       fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-      once_value_20 = fra.me.REG[4];
-      register_static_object(&once_value_20);
-    } else fra.me.REG[4] = once_value_20;
+      once_value_26 = fra.me.REG[4];
+      register_static_object(&once_value_26);
+    } else fra.me.REG[4] = once_value_26;
     fra.me.REG[4] = fra.me.REG[4];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
     REGB2 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-    if (!once_value_21) {
+    if (!once_value_27) {
       fra.me.REG[4] = BOX_NativeString(".");
       REGB2 = TAG_Int(1);
       fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-      once_value_21 = fra.me.REG[4];
-      register_static_object(&once_value_21);
-    } else fra.me.REG[4] = once_value_21;
+      once_value_27 = fra.me.REG[4];
+      register_static_object(&once_value_27);
+    } else fra.me.REG[4] = once_value_27;
     fra.me.REG[4] = fra.me.REG[4];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[0]);
   }
-  /* ./syntax//mmbuilder.nit:726 */
+  /* syntax/mmbuilder.nit:749 */
   REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[1])(fra.me.REG[1]);
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   if (UNTAG_Bool(REGB2)) {
@@ -4636,69 +4938,87 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
   if (UNTAG_Bool(REGB2)) {
     REGB2 = TAG_Bool(true);
   } else {
-    /* ./syntax//mmbuilder.nit:727 */
+    /* syntax/mmbuilder.nit:750 */
     REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[1])(fra.me.REG[1]);
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-    /* ./syntax//mmbuilder.nit:726 */
+    /* syntax/mmbuilder.nit:749 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:727 */
+    /* syntax/mmbuilder.nit:750 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
     REGB2 = CALL_syntax___mmbuilder___AClasskind___is_abstract(fra.me.REG[0])(fra.me.REG[0]);
   } else {
-    /* ./syntax//mmbuilder.nit:726 */
+    /* syntax/mmbuilder.nit:749 */
     REGB1 = TAG_Bool(false);
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
     REGB2 = TAG_Bool(true);
   } else {
-    /* ./syntax//mmbuilder.nit:728 */
+    /* syntax/mmbuilder.nit:751 */
     REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[1])(fra.me.REG[1]);
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-    /* ./syntax//mmbuilder.nit:726 */
+    /* syntax/mmbuilder.nit:749 */
+    REGB2 = REGB1;
+  }
+  if (UNTAG_Bool(REGB2)) {
+    /* syntax/mmbuilder.nit:751 */
+    fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
+    REGB2 = CALL_syntax___mmbuilder___AClasskind___is_enum(fra.me.REG[0])(fra.me.REG[0]);
+  } else {
+    /* syntax/mmbuilder.nit:749 */
+    REGB1 = TAG_Bool(false);
+    REGB2 = REGB1;
+  }
+  if (UNTAG_Bool(REGB2)) {
+    REGB2 = TAG_Bool(true);
+  } else {
+    /* syntax/mmbuilder.nit:752 */
+    REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[1])(fra.me.REG[1]);
+    REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+    /* syntax/mmbuilder.nit:749 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:728 */
+    /* syntax/mmbuilder.nit:752 */
     fra.me.REG[1] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
-    REGB2 = CALL_syntax___mmbuilder___AClasskind___is_enum(fra.me.REG[1])(fra.me.REG[1]);
+    REGB2 = CALL_syntax___mmbuilder___AClasskind___is_extern(fra.me.REG[1])(fra.me.REG[1]);
   } else {
-    /* ./syntax//mmbuilder.nit:726 */
+    /* syntax/mmbuilder.nit:749 */
     REGB1 = TAG_Bool(false);
     REGB2 = REGB1;
   }
-  /* ./syntax//mmbuilder.nit:725 */
+  /* syntax/mmbuilder.nit:748 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:730 */
+    /* syntax/mmbuilder.nit:754 */
     REGB2 = TAG_Int(3);
     fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
-    if (!once_value_22) {
+    if (!once_value_28) {
       fra.me.REG[0] = BOX_NativeString("Redef error: cannot change kind of class ");
       REGB2 = TAG_Int(41);
       fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB2);
-      once_value_22 = fra.me.REG[0];
-      register_static_object(&once_value_22);
-    } else fra.me.REG[0] = once_value_22;
+      once_value_28 = fra.me.REG[0];
+      register_static_object(&once_value_28);
+    } else fra.me.REG[0] = once_value_28;
     fra.me.REG[0] = fra.me.REG[0];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     fra.me.REG[0] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    if (!once_value_23) {
+    if (!once_value_29) {
       fra.me.REG[0] = BOX_NativeString(".");
       REGB2 = TAG_Int(1);
       fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB2);
-      once_value_23 = fra.me.REG[0];
-      register_static_object(&once_value_23);
-    } else fra.me.REG[0] = once_value_23;
+      once_value_29 = fra.me.REG[0];
+      register_static_object(&once_value_29);
+    } else fra.me.REG[0] = once_value_29;
     fra.me.REG[0] = fra.me.REG[0];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
   }
-  label16: while(0);
+  label22: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -4708,13 +5028,14 @@ val_t syntax___mmbuilder___AStdClassdef___visibility_level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 734;
+  fra.me.line = 758;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdClassdef___visibility_level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:736 */
+  /* syntax/mmbuilder.nit:760 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_visibility(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -4730,13 +5051,14 @@ val_t syntax___mmbuilder___AMainClassdef___name(val_t p0){
     static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 741;
+  fra.me.line = 765;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMainClassdef___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:743 */
+  /* syntax/mmbuilder.nit:767 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("Sys");
@@ -4764,13 +5086,14 @@ val_t syntax___mmbuilder___ATopClassdef___name(val_t p0){
     static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 748;
+  fra.me.line = 772;
   fra.me.meth = LOCATE_syntax___mmbuilder___ATopClassdef___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:750 */
+  /* syntax/mmbuilder.nit:774 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("Object");
@@ -4797,10 +5120,11 @@ void syntax___mmbuilder___AFormaldef___accept_class_builder(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 758;
+  fra.me.line = 782;
   fra.me.meth = LOCATE_syntax___mmbuilder___AFormaldef___accept_class_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -4809,36 +5133,36 @@ void syntax___mmbuilder___AFormaldef___accept_class_builder(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:758 */
+  /* syntax/mmbuilder.nit:782 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:760 */
+  /* syntax/mmbuilder.nit:784 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AFormaldef___n_id(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:761 */
+  /* syntax/mmbuilder.nit:785 */
   REGB0 = CALL_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[5] = NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___init(fra.me.REG[4], REGB0, fra.me.REG[5]);
-  /* ./syntax//mmbuilder.nit:762 */
+  /* syntax/mmbuilder.nit:786 */
   ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]) = fra.me.REG[5];
-  /* ./syntax//mmbuilder.nit:763 */
+  /* syntax/mmbuilder.nit:787 */
   REGB0 = CALL_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity(fra.me.REG[3])(fra.me.REG[3]);
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ../lib/standard/kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./syntax//mmbuilder.nit:763 */
+  /* syntax/mmbuilder.nit:787 */
   CALL_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
-  /* ./syntax//mmbuilder.nit:764 */
+  /* syntax/mmbuilder.nit:788 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   CALL_metamodel___genericity___MMLocalClass___register_formal(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-  /* ./syntax//mmbuilder.nit:765 */
+  /* syntax/mmbuilder.nit:789 */
   fra.me.REG[3] = CALL_syntax___mmbuilder___ClassBuilderVisitor___formals(fra.me.REG[3])(fra.me.REG[3]);
   REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 765);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 789);
   }
   CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4], fra.me.REG[5]);
-  /* ./syntax//mmbuilder.nit:766 */
+  /* syntax/mmbuilder.nit:790 */
   CALL_SUPER_syntax___mmbuilder___AFormaldef___accept_class_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -4854,10 +5178,11 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
         static val_t once_value_5; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 769;
+  fra.me.line = 793;
   fra.me.meth = LOCATE_syntax___mmbuilder___AFormaldef___accept_class_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -4866,17 +5191,17 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:769 */
+  /* syntax/mmbuilder.nit:793 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:771 */
+  /* syntax/mmbuilder.nit:795 */
   CALL_SUPER_syntax___mmbuilder___AFormaldef___accept_class_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:772 */
+  /* syntax/mmbuilder.nit:796 */
   fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:773 */
+  /* syntax/mmbuilder.nit:797 */
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:774 */
+  /* syntax/mmbuilder.nit:798 */
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[0]));
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -4884,7 +5209,7 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:775 */
+    /* syntax/mmbuilder.nit:799 */
     fra.me.REG[4] = CALL_parser___parser_nodes___AFormaldef___n_type(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -4899,25 +5224,25 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
       }
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:776 */
+      /* syntax/mmbuilder.nit:800 */
       fra.me.REG[4] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
       fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
       fra.me.REG[5] = CALL_metamodel___inheritance___MMModule___type_any(fra.me.REG[5])(fra.me.REG[5]);
       fra.me.REG[5] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[5])(fra.me.REG[5]);
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 776);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 800);
       }
       CALL_metamodel___genericity___MMTypeFormalParameter___bound__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     } else {
-      /* ./syntax//mmbuilder.nit:778 */
+      /* syntax/mmbuilder.nit:802 */
       fra.me.REG[5] = CALL_parser___parser_nodes___AFormaldef___n_type(fra.me.REG[2])(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 778);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 802);
       }
       fra.me.REG[5] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-      /* ./syntax//mmbuilder.nit:779 */
+      /* syntax/mmbuilder.nit:803 */
       REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -4933,27 +5258,27 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
       if (UNTAG_Bool(REGB0)) {
         goto label1;
       }
-      /* ./syntax//mmbuilder.nit:780 */
+      /* syntax/mmbuilder.nit:804 */
       fra.me.REG[4] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 780);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 804);
       }
       CALL_metamodel___genericity___MMTypeFormalParameter___bound__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     }
   } else {
-    /* ./syntax//mmbuilder.nit:783 */
+    /* syntax/mmbuilder.nit:807 */
     fra.me.REG[5] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 783);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 807);
     }
     REGB0 = CALL_metamodel___genericity___MMTypeFormalParameter___position(fra.me.REG[5])(fra.me.REG[5]);
     fra.me.REG[0] = CALL_metamodel___genericity___MMLocalClass___get_formal(fra.me.REG[0])(fra.me.REG[0], REGB0);
     fra.me.REG[0] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
     fra.me.REG[5] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
-    /* ./syntax//mmbuilder.nit:784 */
+    /* syntax/mmbuilder.nit:808 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AFormaldef___n_type(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -4968,22 +5293,22 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
       }
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:785 */
+      /* syntax/mmbuilder.nit:809 */
       fra.me.REG[0] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 785);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 809);
       }
       CALL_metamodel___genericity___MMTypeFormalParameter___bound__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
     } else {
-      /* ./syntax//mmbuilder.nit:787 */
+      /* syntax/mmbuilder.nit:811 */
       fra.me.REG[0] = CALL_parser___parser_nodes___AFormaldef___n_type(fra.me.REG[2])(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 787);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 811);
       }
       fra.me.REG[0] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-      /* ./syntax//mmbuilder.nit:788 */
+      /* syntax/mmbuilder.nit:812 */
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -4999,18 +5324,18 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
       if (UNTAG_Bool(REGB0)) {
         goto label1;
       }
-      /* ./syntax//mmbuilder.nit:789 */
+      /* syntax/mmbuilder.nit:813 */
       fra.me.REG[4] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 789);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 813);
       }
       CALL_metamodel___genericity___MMTypeFormalParameter___bound__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
-      /* ./syntax//mmbuilder.nit:790 */
+      /* syntax/mmbuilder.nit:814 */
       fra.me.REG[0] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 790);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 814);
       }
       fra.me.REG[0] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[5]));
@@ -5021,7 +5346,7 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
       }
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:791 */
+        /* syntax/mmbuilder.nit:815 */
         REGB0 = TAG_Int(7);
         fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
         if (!once_value_2) {
@@ -5047,7 +5372,7 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
         fra.me.REG[1] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
         REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 791);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 815);
         }
         fra.me.REG[1] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
@@ -5086,13 +5411,14 @@ val_t syntax___mmbuilder___ASuperclass___ancestor(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 799;
+  fra.me.line = 823;
   fra.me.meth = LOCATE_syntax___mmbuilder___ASuperclass___ancestor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:799 */
+  /* syntax/mmbuilder.nit:823 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___ASuperclass____ancestor(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -5104,25 +5430,26 @@ void syntax___mmbuilder___ASuperclass___accept_class_specialization_builder(val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 801;
+  fra.me.line = 825;
   fra.me.meth = LOCATE_syntax___mmbuilder___ASuperclass___accept_class_specialization_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:801 */
+  /* syntax/mmbuilder.nit:825 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:803 */
+  /* syntax/mmbuilder.nit:827 */
   CALL_SUPER_syntax___mmbuilder___ASuperclass___accept_class_specialization_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:804 */
+  /* syntax/mmbuilder.nit:828 */
   fra.me.REG[1] = CALL_parser___parser_nodes___ASuperclass___n_type(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[1] = CALL_syntax___syntax_base___AType___get_local_class(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:805 */
+  /* syntax/mmbuilder.nit:829 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -5138,11 +5465,11 @@ void syntax___mmbuilder___ASuperclass___accept_class_specialization_builder(val_
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:806 */
+  /* syntax/mmbuilder.nit:830 */
   fra.me.REG[1] = NEW_MMSrcAncestor_syntax___mmbuilder___MMSrcAncestor___init(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:807 */
+  /* syntax/mmbuilder.nit:831 */
   ATTR_syntax___mmbuilder___ASuperclass____ancestor(fra.me.REG[2]) = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:808 */
+  /* syntax/mmbuilder.nit:832 */
   fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   CALL_metamodel___inheritance___MMLocalClass___add_direct_parent(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   label1: while(0);
@@ -5155,37 +5482,38 @@ void syntax___mmbuilder___ASuperclass___accept_class_ancestor_builder(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 811;
+  fra.me.line = 835;
   fra.me.meth = LOCATE_syntax___mmbuilder___ASuperclass___accept_class_ancestor_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:811 */
+  /* syntax/mmbuilder.nit:835 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:813 */
+  /* syntax/mmbuilder.nit:837 */
   CALL_SUPER_syntax___mmbuilder___ASuperclass___accept_class_ancestor_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:814 */
+  /* syntax/mmbuilder.nit:838 */
   fra.me.REG[1] = ATTR_syntax___mmbuilder___ASuperclass____ancestor(fra.me.REG[2]);
   fra.me.REG[0] = CALL_parser___parser_nodes___ASuperclass___n_type(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[0] = CALL_syntax___syntax_base___AType___get_unchecked_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 814);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 838);
   }
   CALL_metamodel___static_type___MMAncestor___stype__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:815 */
+  /* syntax/mmbuilder.nit:839 */
   fra.me.REG[2] = ATTR_syntax___mmbuilder___ASuperclass____ancestor(fra.me.REG[2]);
   fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[3] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 815);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 839);
   }
   CALL_metamodel___static_type___MMAncestor___inheriter__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
@@ -5196,22 +5524,23 @@ void syntax___mmbuilder___ASuperclass___accept_class_verifier(val_t p0, val_t p1
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 818;
+  fra.me.line = 842;
   fra.me.meth = LOCATE_syntax___mmbuilder___ASuperclass___accept_class_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:818 */
+  /* syntax/mmbuilder.nit:842 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:820 */
+  /* syntax/mmbuilder.nit:844 */
   CALL_SUPER_syntax___mmbuilder___ASuperclass___accept_class_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:821 */
+  /* syntax/mmbuilder.nit:845 */
   fra.me.REG[2] = CALL_parser___parser_nodes___ASuperclass___n_type(fra.me.REG[2])(fra.me.REG[2]);
   CALL_syntax___syntax_base___AType___check_conform(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
@@ -5226,10 +5555,11 @@ void syntax___mmbuilder___APropdef___process_and_check(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 826;
+  fra.me.line = 850;
   fra.me.meth = LOCATE_syntax___mmbuilder___APropdef___process_and_check;
   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;
@@ -5239,7 +5569,7 @@ void syntax___mmbuilder___APropdef___process_and_check(val_t p0, val_t p1, val_t
   fra.me.REG[2] = p2;
   REGB0 = p3;
   REGB1 = p4;
-  /* ./syntax//mmbuilder.nit:834 */
+  /* syntax/mmbuilder.nit:858 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[3])(fra.me.REG[3]);
   REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[2]));
@@ -5249,10 +5579,10 @@ void syntax___mmbuilder___APropdef___process_and_check(val_t p0, val_t p1, val_t
     REGB2 = REGB3;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:835 */
+    /* syntax/mmbuilder.nit:859 */
     CALL_syntax___mmbuilder___APropdef___do_and_check_intro(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, REGB1);
   } else {
-    /* ./syntax//mmbuilder.nit:837 */
+    /* syntax/mmbuilder.nit:861 */
     CALL_syntax___mmbuilder___APropdef___do_and_check_redef(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, REGB1);
   }
   stack_frame_head = fra.me.prev;
@@ -5275,19 +5605,23 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         static val_t once_value_7; /* Once value */
         static val_t once_value_8; /* Once value */
         static val_t once_value_9; /* Once value */
-        static val_t once_value_10; /* Once value */
-        static val_t once_value_11; /* Once value */
-        static val_t once_value_12; /* Once value */
-          static val_t once_value_13; /* Once value */
-          static val_t once_value_14; /* Once value */
-          static val_t once_value_15; /* Once value */
-        static val_t once_value_16; /* Once value */
+          static val_t once_value_10; /* Once value */
+          static val_t once_value_11; /* Once value */
+          static val_t once_value_12; /* Once value */
+        static val_t once_value_13; /* Once value */
+        static val_t once_value_14; /* Once value */
+        static val_t once_value_15; /* Once value */
+          static val_t once_value_16; /* Once value */
+          static val_t once_value_17; /* Once value */
+          static val_t once_value_18; /* Once value */
+        static val_t once_value_19; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 841;
+  fra.me.line = 865;
   fra.me.meth = LOCATE_syntax___mmbuilder___APropdef___do_and_check_intro;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
+  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;
@@ -5300,12 +5634,12 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
   fra.me.REG[2] = p2;
   REGB0 = p3;
   REGB1 = p4;
-  /* ./syntax//mmbuilder.nit:844 */
+  /* syntax/mmbuilder.nit:868 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:845 */
+  /* syntax/mmbuilder.nit:869 */
   fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:846 */
+  /* syntax/mmbuilder.nit:870 */
   fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
   REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalClass___visibility_level(fra.me.REG[5])(fra.me.REG[5]);
@@ -5315,19 +5649,19 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ./../lib/standard//kernel.nit:216 */
+  /* ../lib/standard/kernel.nit:233 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-  /* ./syntax//mmbuilder.nit:846 */
+  /* syntax/mmbuilder.nit:870 */
   if (UNTAG_Bool(REGB3)) {
-    /* ./syntax//mmbuilder.nit:848 */
+    /* syntax/mmbuilder.nit:872 */
     REGB3 = TAG_Int(3);
     REGB1 = REGB3;
   }
-  /* ./syntax//mmbuilder.nit:850 */
+  /* syntax/mmbuilder.nit:874 */
   CALL_metamodel___abstractmetamodel___MMGlobalProperty___visibility_level__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
-  /* ./syntax//mmbuilder.nit:851 */
+  /* syntax/mmbuilder.nit:875 */
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:852 */
+    /* syntax/mmbuilder.nit:876 */
     REGB0 = TAG_Int(5);
     fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -5365,13 +5699,13 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
     fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
   }
-  /* ./syntax//mmbuilder.nit:854 */
+  /* syntax/mmbuilder.nit:878 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_attribute(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:855 */
+    /* syntax/mmbuilder.nit:879 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[4])(fra.me.REG[4]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:856 */
+      /* syntax/mmbuilder.nit:880 */
       REGB0 = TAG_Int(5);
       fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_4) {
@@ -5409,10 +5743,10 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
       fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
       CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
     } else {
-      /* ./syntax//mmbuilder.nit:857 */
+      /* syntax/mmbuilder.nit:881 */
       REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[4])(fra.me.REG[4]);
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:858 */
+        /* syntax/mmbuilder.nit:882 */
         REGB0 = TAG_Int(5);
         fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
         if (!once_value_7) {
@@ -5449,89 +5783,131 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
         fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
         CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
+      } else {
+        /* syntax/mmbuilder.nit:883 */
+        REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[4])(fra.me.REG[4]);
+        if (UNTAG_Bool(REGB0)) {
+          /* syntax/mmbuilder.nit:884 */
+          REGB0 = TAG_Int(5);
+          fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+          if (!once_value_10) {
+            fra.me.REG[6] = BOX_NativeString("Error: Attempt to define attribute ");
+            REGB0 = TAG_Int(35);
+            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+            once_value_10 = fra.me.REG[6];
+            register_static_object(&once_value_10);
+          } else fra.me.REG[6] = once_value_10;
+          fra.me.REG[6] = fra.me.REG[6];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+          fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+          if (!once_value_11) {
+            fra.me.REG[6] = BOX_NativeString(" in the extern class ");
+            REGB0 = TAG_Int(21);
+            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+            once_value_11 = fra.me.REG[6];
+            register_static_object(&once_value_11);
+          } else fra.me.REG[6] = once_value_11;
+          fra.me.REG[6] = fra.me.REG[6];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+          fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
+          fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+          if (!once_value_12) {
+            fra.me.REG[6] = BOX_NativeString(".");
+            REGB0 = TAG_Int(1);
+            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+            once_value_12 = fra.me.REG[6];
+            register_static_object(&once_value_12);
+          } else fra.me.REG[6] = once_value_12;
+          fra.me.REG[6] = fra.me.REG[6];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+          fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+          CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
+        }
       }
     }
   } else {
-    /* ./syntax//mmbuilder.nit:860 */
+    /* syntax/mmbuilder.nit:886 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:861 */
+      /* syntax/mmbuilder.nit:887 */
       REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[4])(fra.me.REG[4]);
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:862 */
+        /* syntax/mmbuilder.nit:888 */
         REGB0 = TAG_Int(5);
         fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-        if (!once_value_10) {
+        if (!once_value_13) {
           fra.me.REG[6] = BOX_NativeString("Error: Attempt to define a constructor ");
           REGB0 = TAG_Int(39);
           fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
-          once_value_10 = fra.me.REG[6];
-          register_static_object(&once_value_10);
-        } else fra.me.REG[6] = once_value_10;
+          once_value_13 = fra.me.REG[6];
+          register_static_object(&once_value_13);
+        } else fra.me.REG[6] = once_value_13;
         fra.me.REG[6] = fra.me.REG[6];
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
         fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-        if (!once_value_11) {
+        if (!once_value_14) {
           fra.me.REG[6] = BOX_NativeString(" in the class ");
           REGB0 = TAG_Int(14);
           fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
-          once_value_11 = fra.me.REG[6];
-          register_static_object(&once_value_11);
-        } else fra.me.REG[6] = once_value_11;
+          once_value_14 = fra.me.REG[6];
+          register_static_object(&once_value_14);
+        } else fra.me.REG[6] = once_value_14;
         fra.me.REG[6] = fra.me.REG[6];
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
         fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
         fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-        if (!once_value_12) {
+        if (!once_value_15) {
           fra.me.REG[6] = BOX_NativeString(".");
           REGB0 = TAG_Int(1);
           fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
-          once_value_12 = fra.me.REG[6];
-          register_static_object(&once_value_12);
-        } else fra.me.REG[6] = once_value_12;
+          once_value_15 = fra.me.REG[6];
+          register_static_object(&once_value_15);
+        } else fra.me.REG[6] = once_value_15;
         fra.me.REG[6] = fra.me.REG[6];
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
         fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
         CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
       } else {
-        /* ./syntax//mmbuilder.nit:863 */
+        /* syntax/mmbuilder.nit:889 */
         REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[4])(fra.me.REG[4]);
         if (UNTAG_Bool(REGB0)) {
-          /* ./syntax//mmbuilder.nit:864 */
+          /* syntax/mmbuilder.nit:890 */
           REGB0 = TAG_Int(5);
           fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-          if (!once_value_13) {
+          if (!once_value_16) {
             fra.me.REG[5] = BOX_NativeString("Error: Attempt to define a constructor ");
             REGB0 = TAG_Int(39);
             fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
-            once_value_13 = fra.me.REG[5];
-            register_static_object(&once_value_13);
-          } else fra.me.REG[5] = once_value_13;
+            once_value_16 = fra.me.REG[5];
+            register_static_object(&once_value_16);
+          } else fra.me.REG[5] = once_value_16;
           fra.me.REG[5] = fra.me.REG[5];
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
           fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-          if (!once_value_14) {
+          if (!once_value_17) {
             fra.me.REG[5] = BOX_NativeString(" in the enum ");
             REGB0 = TAG_Int(13);
             fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
-            once_value_14 = fra.me.REG[5];
-            register_static_object(&once_value_14);
-          } else fra.me.REG[5] = once_value_14;
+            once_value_17 = fra.me.REG[5];
+            register_static_object(&once_value_17);
+          } else fra.me.REG[5] = once_value_17;
           fra.me.REG[5] = fra.me.REG[5];
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
           fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
           fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-          if (!once_value_15) {
+          if (!once_value_18) {
             fra.me.REG[5] = BOX_NativeString(".");
             REGB0 = TAG_Int(1);
             fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
-            once_value_15 = fra.me.REG[5];
-            register_static_object(&once_value_15);
-          } else fra.me.REG[5] = once_value_15;
+            once_value_18 = fra.me.REG[5];
+            register_static_object(&once_value_18);
+          } else fra.me.REG[5] = once_value_18;
           fra.me.REG[5] = fra.me.REG[5];
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
           fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
@@ -5540,7 +5916,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
       }
     }
   }
-  /* ./syntax//mmbuilder.nit:867 */
+  /* syntax/mmbuilder.nit:895 */
   fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -5555,17 +5931,17 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:868 */
+    /* syntax/mmbuilder.nit:896 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:869 */
+      /* syntax/mmbuilder.nit:897 */
       fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-      /* ./syntax//mmbuilder.nit:870 */
+      /* syntax/mmbuilder.nit:898 */
       CALL_syntax___mmbuilder___APropdef___inherit_signature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
     }
-    /* ./syntax//mmbuilder.nit:872 */
+    /* syntax/mmbuilder.nit:900 */
     fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -5589,53 +5965,53 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
     }
     if (UNTAG_Bool(REGB0)) {
     } else {
-      /* ./syntax//mmbuilder.nit:874 */
+      /* syntax/mmbuilder.nit:902 */
       fra.me.REG[4] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[4] = CALL_syntax___mmbuilder___SignatureBuilder___untyped_params(fra.me.REG[4])(fra.me.REG[4]);
       REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:875 */
+        /* syntax/mmbuilder.nit:903 */
         fra.me.REG[4] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[4] = CALL_syntax___mmbuilder___SignatureBuilder___untyped_params(fra.me.REG[4])(fra.me.REG[4]);
         fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
-        if (!once_value_16) {
+        if (!once_value_19) {
           fra.me.REG[0] = BOX_NativeString("Error: Untyped parameter.");
           REGB0 = TAG_Int(25);
           fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
-          once_value_16 = fra.me.REG[0];
-          register_static_object(&once_value_16);
-        } else fra.me.REG[0] = once_value_16;
+          once_value_19 = fra.me.REG[0];
+          register_static_object(&once_value_19);
+        } else fra.me.REG[0] = once_value_19;
         fra.me.REG[0] = fra.me.REG[0];
         CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
       } else {
-        /* ./syntax//mmbuilder.nit:877 */
+        /* syntax/mmbuilder.nit:905 */
         fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
         fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[4] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[4])(fra.me.REG[4]);
         fra.me.REG[4] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[0], NIT_NULL, fra.me.REG[4]);
         CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-        /* ./syntax//mmbuilder.nit:878 */
+        /* syntax/mmbuilder.nit:906 */
         fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[1] = CALL_syntax___mmbuilder___SignatureBuilder___closure_decls(fra.me.REG[1])(fra.me.REG[1]);
-        /* ./../lib/standard//collection//array.nit:232 */
+        /* ../lib/standard/collection/array.nit:269 */
         REGB0 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:233 */
+        /* ../lib/standard/collection/array.nit:270 */
         REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-        /* ./../lib/standard//collection//array.nit:234 */
+        /* ../lib/standard/collection/array.nit:271 */
         fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
-        /* ./../lib/standard//collection//array.nit:235 */
+        /* ../lib/standard/collection/array.nit:272 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ../lib/standard/collection/array.nit:24 */
           REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
           REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
           REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -5643,39 +6019,39 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ./../lib/standard//kernel.nit:215 */
+          /* ../lib/standard/kernel.nit:232 */
           REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-          /* ./../lib/standard//collection//array.nit:235 */
+          /* ../lib/standard/collection/array.nit:272 */
           if (UNTAG_Bool(REGB1)) {
-            /* ./../lib/standard//collection//array.nit:236 */
+            /* ../lib/standard/collection/array.nit:273 */
             REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:652 */
+            /* ../lib/standard/collection/array.nit:718 */
             fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-            /* ./syntax//mmbuilder.nit:879 */
+            /* syntax/mmbuilder.nit:907 */
             fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
             REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 879);
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 907);
             }
             fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
             fra.me.REG[0] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[0])(fra.me.REG[0]);
             fra.me.REG[0] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[0])(fra.me.REG[0]);
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB1 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ../lib/standard/kernel.nit:235 */
             REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB0 = REGB1;
           } else {
-            /* ./../lib/standard//collection//array.nit:235 */
-            goto label17;
+            /* ../lib/standard/collection/array.nit:272 */
+            goto label20;
           }
         }
-        label17: while(0);
+        label20: while(0);
       }
     }
   }
@@ -5692,10 +6068,11 @@ void syntax___mmbuilder___APropdef___inherit_signature(val_t p0, val_t p1, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 885;
+  fra.me.line = 913;
   fra.me.meth = LOCATE_syntax___mmbuilder___APropdef___inherit_signature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
+  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;
@@ -5711,26 +6088,26 @@ void syntax___mmbuilder___APropdef___inherit_signature(val_t p0, val_t p1, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./syntax//mmbuilder.nit:887 */
+  /* syntax/mmbuilder.nit:915 */
   fra.me.REG[0] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:232 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:233 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -5738,27 +6115,27 @@ void syntax___mmbuilder___APropdef___inherit_signature(val_t p0, val_t p1, val_t
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:889 */
+      /* syntax/mmbuilder.nit:917 */
       fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[5])(fra.me.REG[5]);
       fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[6] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[6])(fra.me.REG[6]);
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 889);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 917);
       }
       fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___adaptation_to(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-      /* ./syntax//mmbuilder.nit:891 */
+      /* syntax/mmbuilder.nit:919 */
       REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
@@ -5772,52 +6149,52 @@ void syntax___mmbuilder___APropdef___inherit_signature(val_t p0, val_t p1, val_t
         }
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:892 */
+        /* syntax/mmbuilder.nit:920 */
         fra.me.REG[5] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[5] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[5])(fra.me.REG[5]);
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ../lib/standard/collection/array.nit:24 */
         REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-        /* ./syntax//mmbuilder.nit:892 */
+        /* syntax/mmbuilder.nit:920 */
         REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[6])(fra.me.REG[6]);
         REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
         if (UNTAG_Bool(REGB3)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ../lib/standard/kernel.nit:227 */
           REGB2 = TAG_Bool((REGB1)==(REGB2));
-          /* ./syntax//mmbuilder.nit:892 */
+          /* syntax/mmbuilder.nit:920 */
           REGB3 = REGB2;
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* ./syntax//mmbuilder.nit:893 */
+          /* syntax/mmbuilder.nit:921 */
           goto label1;
         }
-        /* ./syntax//mmbuilder.nit:895 */
+        /* syntax/mmbuilder.nit:923 */
         fra.me.REG[5] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[5] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[5])(fra.me.REG[5]);
-        /* ./../lib/standard//collection//array.nit:232 */
+        /* ../lib/standard/collection/array.nit:269 */
         REGB3 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:233 */
+        /* ../lib/standard/collection/array.nit:270 */
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-        /* ./../lib/standard//collection//array.nit:234 */
+        /* ../lib/standard/collection/array.nit:271 */
         fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
-        /* ./../lib/standard//collection//array.nit:235 */
+        /* ../lib/standard/collection/array.nit:272 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ../lib/standard/collection/array.nit:24 */
           REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
           REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
           REGB1 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -5825,66 +6202,66 @@ void syntax___mmbuilder___APropdef___inherit_signature(val_t p0, val_t p1, val_t
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ./../lib/standard//kernel.nit:215 */
+          /* ../lib/standard/kernel.nit:232 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
-          /* ./../lib/standard//collection//array.nit:235 */
+          /* ../lib/standard/collection/array.nit:272 */
           if (UNTAG_Bool(REGB2)) {
-            /* ./../lib/standard//collection//array.nit:236 */
+            /* ../lib/standard/collection/array.nit:273 */
             REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
             if (UNTAG_Bool(REGB2)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:652 */
+            /* ../lib/standard/collection/array.nit:718 */
             fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB3)];
-            /* ./syntax//mmbuilder.nit:896 */
+            /* syntax/mmbuilder.nit:924 */
             REGB2 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[8])(fra.me.REG[8]);
             fra.me.REG[9] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[6])(fra.me.REG[6], REGB2);
-            /* ./syntax//mmbuilder.nit:897 */
+            /* syntax/mmbuilder.nit:925 */
             CALL_syntax___mmbuilder___AParam___stype__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
-            /* ./syntax//mmbuilder.nit:898 */
+            /* syntax/mmbuilder.nit:926 */
             REGB2 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[8])(fra.me.REG[8]);
             REGB1 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[6])(fra.me.REG[6]);
             REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
             if (UNTAG_Bool(REGB4)) {
             } else {
-              /* ./../lib/standard//kernel.nit:210 */
+              /* ../lib/standard/kernel.nit:227 */
               REGB1 = TAG_Bool((REGB2)==(REGB1));
-              /* ./syntax//mmbuilder.nit:898 */
+              /* syntax/mmbuilder.nit:926 */
               REGB4 = REGB1;
             }
             if (UNTAG_Bool(REGB4)) {
-              /* ./syntax//mmbuilder.nit:899 */
+              /* syntax/mmbuilder.nit:927 */
               fra.me.REG[10] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9]);
               fra.me.REG[9] = fra.me.REG[10];
             }
-            /* ./syntax//mmbuilder.nit:901 */
+            /* syntax/mmbuilder.nit:929 */
             fra.me.REG[8] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[8])(fra.me.REG[8]);
             CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB4 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ../lib/standard/kernel.nit:235 */
             REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB4));
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB3 = REGB4;
           } else {
-            /* ./../lib/standard//collection//array.nit:235 */
+            /* ../lib/standard/collection/array.nit:272 */
             goto label2;
           }
         }
         label2: while(0);
-        /* ./syntax//mmbuilder.nit:904 */
+        /* syntax/mmbuilder.nit:932 */
         fra.me.REG[0] = fra.me.REG[6];
-        /* ./syntax//mmbuilder.nit:905 */
+        /* syntax/mmbuilder.nit:933 */
         CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
       }
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB3;
     } else {
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label3;
     }
   }
@@ -5925,52 +6302,53 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           static val_t once_value_21; /* Once value */
           static val_t once_value_22; /* Once value */
           static val_t once_value_23; /* Once value */
-        static val_t once_value_25; /* Once value */
         static val_t once_value_26; /* Once value */
         static val_t once_value_27; /* Once value */
         static val_t once_value_28; /* Once value */
         static val_t once_value_29; /* Once value */
         static val_t once_value_30; /* Once value */
-               static val_t once_value_31; /* Once value */
+        static val_t once_value_31; /* Once value */
                static val_t once_value_32; /* Once value */
                static val_t once_value_33; /* Once value */
                static val_t once_value_34; /* Once value */
-               static val_t once_value_36; /* Once value */
+               static val_t once_value_35; /* Once value */
                static val_t once_value_37; /* Once value */
                static val_t once_value_38; /* Once value */
                static val_t once_value_39; /* Once value */
-        static val_t once_value_40; /* Once value */
+               static val_t once_value_40; /* Once value */
         static val_t once_value_41; /* Once value */
         static val_t once_value_42; /* Once value */
         static val_t once_value_43; /* Once value */
         static val_t once_value_44; /* Once value */
-          static val_t once_value_45; /* Once value */
+        static val_t once_value_45; /* Once value */
           static val_t once_value_46; /* Once value */
           static val_t once_value_47; /* Once value */
           static val_t once_value_48; /* Once value */
           static val_t once_value_49; /* Once value */
-            static val_t once_value_50; /* Once value */
+          static val_t once_value_50; /* Once value */
             static val_t once_value_51; /* Once value */
             static val_t once_value_52; /* Once value */
             static val_t once_value_53; /* Once value */
-              static val_t once_value_54; /* Once value */
+            static val_t once_value_54; /* Once value */
               static val_t once_value_55; /* Once value */
               static val_t once_value_56; /* Once value */
               static val_t once_value_57; /* Once value */
               static val_t once_value_58; /* Once value */
-               static val_t once_value_59; /* Once value */
+              static val_t once_value_59; /* Once value */
                static val_t once_value_60; /* Once value */
                static val_t once_value_61; /* Once value */
                static val_t once_value_62; /* Once value */
-    static val_t once_value_64; /* Once value */
+               static val_t once_value_63; /* Once value */
     static val_t once_value_65; /* Once value */
     static val_t once_value_66; /* Once value */
+    static val_t once_value_67; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 910;
+  fra.me.line = 938;
   fra.me.meth = LOCATE_syntax___mmbuilder___APropdef___do_and_check_redef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
+  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;
@@ -5990,14 +6368,14 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
   fra.me.REG[2] = p2;
   REGB0 = p3;
   REGB1 = p4;
-  /* ./syntax//mmbuilder.nit:913 */
-  REGB2 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AConcreteInitPropdef, ID_parser___parser_nodes___AConcreteInitPropdef)) /*cast AConcreteInitPropdef*/;
-  /* ./syntax//mmbuilder.nit:914 */
+  /* syntax/mmbuilder.nit:941 */
+  REGB2 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AInitPropdef, ID_parser___parser_nodes___AInitPropdef)) /*cast AInitPropdef*/;
+  /* syntax/mmbuilder.nit:942 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:916 */
+  /* syntax/mmbuilder.nit:944 */
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:917 */
+    /* syntax/mmbuilder.nit:945 */
     REGB0 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -6034,10 +6412,10 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
-    /* ./syntax//mmbuilder.nit:918 */
+    /* syntax/mmbuilder.nit:946 */
     goto label4;
   }
-  /* ./syntax//mmbuilder.nit:920 */
+  /* syntax/mmbuilder.nit:948 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB2));
@@ -6046,7 +6424,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     REGB0 = REGB3;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:921 */
+    /* syntax/mmbuilder.nit:949 */
     REGB0 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_5) {
@@ -6084,7 +6462,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
   } else {
-    /* ./syntax//mmbuilder.nit:922 */
+    /* syntax/mmbuilder.nit:950 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
@@ -6093,7 +6471,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
       REGB2 = REGB0;
     }
     if (UNTAG_Bool(REGB2)) {
-      /* ./syntax//mmbuilder.nit:923 */
+      /* syntax/mmbuilder.nit:951 */
       REGB2 = TAG_Int(5);
       fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
       if (!once_value_8) {
@@ -6132,29 +6510,29 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
       CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
     }
   }
-  /* ./syntax//mmbuilder.nit:926 */
+  /* syntax/mmbuilder.nit:954 */
   fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:928 */
+  /* syntax/mmbuilder.nit:956 */
   fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[5])(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:232 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:233 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
     REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -6162,24 +6540,24 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:232 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB2)];
-      /* ./syntax//mmbuilder.nit:929 */
+      /* syntax/mmbuilder.nit:957 */
       fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[7])(fra.me.REG[7]);
       fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
-      /* ./syntax//mmbuilder.nit:930 */
+      /* syntax/mmbuilder.nit:958 */
       fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
-      /* ./syntax//mmbuilder.nit:931 */
+      /* syntax/mmbuilder.nit:959 */
       REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -6195,16 +6573,16 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
       if (UNTAG_Bool(REGB0)) {
         goto label11;
       }
-      /* ./syntax//mmbuilder.nit:932 */
+      /* syntax/mmbuilder.nit:960 */
       fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[8] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[8])(fra.me.REG[8]);
       REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 932);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 960);
       }
       fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___adaptation_to(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
       fra.me.REG[7] = fra.me.REG[8];
-      /* ./syntax//mmbuilder.nit:934 */
+      /* syntax/mmbuilder.nit:962 */
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -6218,33 +6596,33 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         }
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:936 */
+        /* syntax/mmbuilder.nit:964 */
         fra.me.REG[8] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[8] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[8])(fra.me.REG[8]);
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ../lib/standard/collection/array.nit:24 */
         REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-        /* ./syntax//mmbuilder.nit:936 */
+        /* syntax/mmbuilder.nit:964 */
         REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 936);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 964);
         }
         REGB3 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[7])(fra.me.REG[7]);
         REGB4 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB3));
         if (UNTAG_Bool(REGB4)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ../lib/standard/kernel.nit:227 */
           REGB3 = TAG_Bool((REGB0)==(REGB3));
-          /* ./syntax//mmbuilder.nit:936 */
+          /* syntax/mmbuilder.nit:964 */
           REGB4 = REGB3;
         }
         REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
         if (UNTAG_Bool(REGB4)) {
-          /* ./syntax//mmbuilder.nit:937 */
+          /* syntax/mmbuilder.nit:965 */
           REGB4 = TAG_Int(11);
           fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
           if (!once_value_12) {
@@ -6304,7 +6682,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
           REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
           if (UNTAG_Bool(REGB4)) {
-            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 937);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 965);
           }
           REGB4 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[7])(fra.me.REG[7]);
           fra.me.REG[10] = CALL_standard___string___Object___to_s(REGB4)(REGB4);
@@ -6320,44 +6698,44 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
           fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
           CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
-          /* ./syntax//mmbuilder.nit:938 */
+          /* syntax/mmbuilder.nit:966 */
           goto label4;
         }
-        /* ./syntax//mmbuilder.nit:940 */
+        /* syntax/mmbuilder.nit:968 */
         fra.me.REG[8] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[8] = CALL_syntax___mmbuilder___SignatureBuilder___closure_decls(fra.me.REG[8])(fra.me.REG[8]);
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ../lib/standard/collection/array.nit:24 */
         REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-        /* ./syntax//mmbuilder.nit:940 */
+        /* syntax/mmbuilder.nit:968 */
         REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 940);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 968);
         }
         fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[7])(fra.me.REG[7]);
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ../lib/standard/collection/array.nit:24 */
         REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-        /* ./syntax//mmbuilder.nit:940 */
+        /* syntax/mmbuilder.nit:968 */
         REGB0 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB3));
         if (UNTAG_Bool(REGB0)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ../lib/standard/kernel.nit:227 */
           REGB3 = TAG_Bool((REGB4)==(REGB3));
-          /* ./syntax//mmbuilder.nit:940 */
+          /* syntax/mmbuilder.nit:968 */
           REGB0 = REGB3;
         }
         REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
         if (UNTAG_Bool(REGB0)) {
-          /* ./syntax//mmbuilder.nit:941 */
+          /* syntax/mmbuilder.nit:969 */
           REGB0 = TAG_Int(11);
           fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
           if (!once_value_18) {
@@ -6417,7 +6795,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
           REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
-            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 941);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 969);
           }
           REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[7])(fra.me.REG[7]);
           fra.me.REG[10] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
@@ -6433,30 +6811,30 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
           fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
           CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
-          /* ./syntax//mmbuilder.nit:942 */
+          /* syntax/mmbuilder.nit:970 */
           goto label4;
         }
-        /* ./syntax//mmbuilder.nit:944 */
+        /* syntax/mmbuilder.nit:972 */
         fra.me.REG[8] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[8] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[8])(fra.me.REG[8]);
-        /* ./../lib/standard//collection//array.nit:232 */
+        /* ../lib/standard/collection/array.nit:269 */
         REGB0 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:233 */
+        /* ../lib/standard/collection/array.nit:270 */
         REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-        /* ./../lib/standard//collection//array.nit:234 */
+        /* ../lib/standard/collection/array.nit:271 */
         fra.me.REG[10] = ATTR_standard___collection___array___Array____items(fra.me.REG[8]);
-        /* ./../lib/standard//collection//array.nit:235 */
+        /* ../lib/standard/collection/array.nit:272 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ../lib/standard/collection/array.nit:24 */
           REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
           REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
           REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -6464,171 +6842,230 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ./../lib/standard//kernel.nit:215 */
+          /* ../lib/standard/kernel.nit:232 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
-          /* ./../lib/standard//collection//array.nit:235 */
+          /* ../lib/standard/collection/array.nit:272 */
           if (UNTAG_Bool(REGB3)) {
-            /* ./../lib/standard//collection//array.nit:236 */
+            /* ../lib/standard/collection/array.nit:273 */
             REGB3 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
             if (UNTAG_Bool(REGB3)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:652 */
+            /* ../lib/standard/collection/array.nit:718 */
             fra.me.REG[11] = ((Nit_NativeArray)fra.me.REG[10])->val[UNTAG_Int(REGB0)];
-            /* ./syntax//mmbuilder.nit:945 */
+            /* syntax/mmbuilder.nit:973 */
             REGB3 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[11])(fra.me.REG[11]);
             REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
             if (UNTAG_Bool(REGB4)) {
-              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 945);
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 973);
             }
             fra.me.REG[12] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[7])(fra.me.REG[7], REGB3);
-            /* ./syntax//mmbuilder.nit:946 */
+            /* syntax/mmbuilder.nit:974 */
             CALL_syntax___mmbuilder___AParam___stype__eq(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
-            /* ./syntax//mmbuilder.nit:947 */
+            /* syntax/mmbuilder.nit:975 */
             REGB3 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[11])(fra.me.REG[11]);
             REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
             if (UNTAG_Bool(REGB4)) {
-              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 947);
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 975);
             }
             REGB4 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[7])(fra.me.REG[7]);
             REGB5 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
             if (UNTAG_Bool(REGB5)) {
             } else {
-              /* ./../lib/standard//kernel.nit:210 */
+              /* ../lib/standard/kernel.nit:227 */
               REGB4 = TAG_Bool((REGB3)==(REGB4));
-              /* ./syntax//mmbuilder.nit:947 */
+              /* syntax/mmbuilder.nit:975 */
               REGB5 = REGB4;
             }
             if (UNTAG_Bool(REGB5)) {
-              /* ./syntax//mmbuilder.nit:948 */
+              /* syntax/mmbuilder.nit:976 */
               fra.me.REG[13] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[12]);
               fra.me.REG[12] = fra.me.REG[13];
             }
-            /* ./syntax//mmbuilder.nit:950 */
+            /* syntax/mmbuilder.nit:978 */
+            fra.me.REG[13] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[11])(fra.me.REG[11]);
+            CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[13])(fra.me.REG[13], fra.me.REG[12]);
+            /* syntax/mmbuilder.nit:980 */
+            REGB5 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+            if (UNTAG_Bool(REGB5)) {
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 980);
+            }
+            fra.me.REG[12] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[7])(fra.me.REG[7]);
+            REGB5 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[11])(fra.me.REG[11]);
+            /* ../lib/standard/collection/array.nit:280 */
+            REGB4 = TAG_Int(0);
+            REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
+            if (UNTAG_Bool(REGB3)) {
+            } else {
+              nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+            }
+            /* ../lib/standard/kernel.nit:233 */
+            REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
+            /* ../lib/standard/collection/array.nit:280 */
+            if (UNTAG_Bool(REGB4)) {
+              REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[12])!=NIT_NULL);
+              if (UNTAG_Bool(REGB4)) {
+              } else {
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+              }
+              REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[12]);
+              REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB5), VTID_standard___kernel___Comparable___OTHER(REGB5))) /*cast OTHER*/;
+              if (UNTAG_Bool(REGB3)) {
+              } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+              }
+              /* ../lib/standard/kernel.nit:232 */
+              REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
+            } else {
+              /* ../lib/standard/collection/array.nit:280 */
+              REGB3 = TAG_Bool(false);
+              REGB4 = REGB3;
+            }
+            if (UNTAG_Bool(REGB4)) {
+            } else {
+              nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+            }
+            /* ../lib/standard/collection/array.nit:281 */
+            fra.me.REG[12] = ATTR_standard___collection___array___Array____items(fra.me.REG[12]);
+            REGB4 = TAG_Bool(fra.me.REG[12]==NIT_NULL);
+            if (UNTAG_Bool(REGB4)) {
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+            }
+            /* ../lib/standard/collection/array.nit:718 */
+            fra.me.REG[12] = ((Nit_NativeArray)fra.me.REG[12])->val[UNTAG_Int(REGB5)];
+            /* ../lib/standard/collection/array.nit:281 */
+            goto label24;
+            label24: while(0);
+            /* syntax/mmbuilder.nit:980 */
             fra.me.REG[11] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[11])(fra.me.REG[11]);
-            CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
-            /* ./../lib/standard//collection//array.nit:237 */
+            fra.me.REG[11] = CALL_syntax___syntax_base___Variable___name(fra.me.REG[11])(fra.me.REG[11]);
+            REGB5 = TAG_Bool(fra.me.REG[12]==NIT_NULL);
+            if (UNTAG_Bool(REGB5)) {
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 980);
+            }
+            CALL_metamodel___static_type___MMParam___name__eq(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
+            /* ../lib/standard/collection/array.nit:274 */
             REGB5 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ../lib/standard/kernel.nit:235 */
             REGB5 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB5));
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB0 = REGB5;
           } else {
-            /* ./../lib/standard//collection//array.nit:235 */
-            goto label24;
+            /* ../lib/standard/collection/array.nit:272 */
+            goto label25;
           }
         }
-        label24: while(0);
-        /* ./syntax//mmbuilder.nit:952 */
+        label25: while(0);
+        /* syntax/mmbuilder.nit:982 */
         fra.me.REG[4] = fra.me.REG[7];
-        /* ./syntax//mmbuilder.nit:953 */
+        /* syntax/mmbuilder.nit:983 */
         CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
       }
-      /* ./syntax//mmbuilder.nit:957 */
+      /* syntax/mmbuilder.nit:987 */
       fra.me.REG[10] = CALL_syntax___syntax_base___AbsSyntaxVisitor___tc(fra.me.REG[1])(fra.me.REG[1]);
-      REGB0 = CALL_mmloader___ToolContext___error_count(fra.me.REG[10])(fra.me.REG[10]);
-      /* ./syntax//mmbuilder.nit:965 */
+      REGB0 = CALL_toolcontext___ToolContext___error_count(fra.me.REG[10])(fra.me.REG[10]);
+      /* syntax/mmbuilder.nit:995 */
       REGB5 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB5)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 965);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 995);
       }
       REGB5 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
       REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 965);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 995);
       }
       REGB4 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[7])(fra.me.REG[7]);
       REGB3 = TAG_Bool(IS_EQUAL_OO(REGB5,REGB4));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ../lib/standard/kernel.nit:227 */
         REGB4 = TAG_Bool((REGB5)==(REGB4));
-        /* ./syntax//mmbuilder.nit:965 */
+        /* syntax/mmbuilder.nit:995 */
         REGB3 = REGB4;
       }
       REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
       if (UNTAG_Bool(REGB3)) {
-        /* ./syntax//mmbuilder.nit:966 */
+        /* syntax/mmbuilder.nit:996 */
         REGB3 = TAG_Int(11);
         fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
-        if (!once_value_25) {
+        if (!once_value_26) {
           fra.me.REG[8] = BOX_NativeString("Redef error: ");
           REGB3 = TAG_Int(13);
           fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
-          once_value_25 = fra.me.REG[8];
-          register_static_object(&once_value_25);
-        } else fra.me.REG[8] = once_value_25;
+          once_value_26 = fra.me.REG[8];
+          register_static_object(&once_value_26);
+        } else fra.me.REG[8] = once_value_26;
         fra.me.REG[8] = fra.me.REG[8];
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
         fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
         fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
-        if (!once_value_26) {
+        if (!once_value_27) {
           fra.me.REG[8] = BOX_NativeString("::");
           REGB3 = TAG_Int(2);
           fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
-          once_value_26 = fra.me.REG[8];
-          register_static_object(&once_value_26);
-        } else fra.me.REG[8] = once_value_26;
+          once_value_27 = fra.me.REG[8];
+          register_static_object(&once_value_27);
+        } else fra.me.REG[8] = once_value_27;
         fra.me.REG[8] = fra.me.REG[8];
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
         fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
-        if (!once_value_27) {
+        if (!once_value_28) {
           fra.me.REG[8] = BOX_NativeString(" redefines ");
           REGB3 = TAG_Int(11);
           fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
-          once_value_27 = fra.me.REG[8];
-          register_static_object(&once_value_27);
-        } else fra.me.REG[8] = once_value_27;
+          once_value_28 = fra.me.REG[8];
+          register_static_object(&once_value_28);
+        } else fra.me.REG[8] = once_value_28;
         fra.me.REG[8] = fra.me.REG[8];
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
         fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[9])(fra.me.REG[9]);
         fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
-        if (!once_value_28) {
+        if (!once_value_29) {
           fra.me.REG[8] = BOX_NativeString("::");
           REGB3 = TAG_Int(2);
           fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
-          once_value_28 = fra.me.REG[8];
-          register_static_object(&once_value_28);
-        } else fra.me.REG[8] = once_value_28;
+          once_value_29 = fra.me.REG[8];
+          register_static_object(&once_value_29);
+        } else fra.me.REG[8] = once_value_29;
         fra.me.REG[8] = fra.me.REG[8];
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
         fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
-        if (!once_value_29) {
+        if (!once_value_30) {
           fra.me.REG[8] = BOX_NativeString(" with ");
           REGB3 = TAG_Int(6);
           fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
-          once_value_29 = fra.me.REG[8];
-          register_static_object(&once_value_29);
-        } else fra.me.REG[8] = once_value_29;
+          once_value_30 = fra.me.REG[8];
+          register_static_object(&once_value_30);
+        } else fra.me.REG[8] = once_value_30;
         fra.me.REG[8] = fra.me.REG[8];
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
         REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 966);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 996);
         }
         REGB3 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[7])(fra.me.REG[7]);
         fra.me.REG[8] = CALL_standard___string___Object___to_s(REGB3)(REGB3);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
-        if (!once_value_30) {
+        if (!once_value_31) {
           fra.me.REG[8] = BOX_NativeString(" parameter(s).");
           REGB3 = TAG_Int(14);
           fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
-          once_value_30 = fra.me.REG[8];
-          register_static_object(&once_value_30);
-        } else fra.me.REG[8] = once_value_30;
+          once_value_31 = fra.me.REG[8];
+          register_static_object(&once_value_31);
+        } else fra.me.REG[8] = once_value_31;
         fra.me.REG[8] = fra.me.REG[8];
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
         fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
         CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[10]);
       } else {
-        /* ./syntax//mmbuilder.nit:967 */
+        /* syntax/mmbuilder.nit:997 */
         REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 967);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 997);
         }
         REGB3 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
         REGB4 = TAG_Int(0);
@@ -6637,42 +7074,42 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ./../lib/standard//kernel.nit:217 */
+        /* ../lib/standard/kernel.nit:234 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB4));
-        /* ./syntax//mmbuilder.nit:967 */
+        /* syntax/mmbuilder.nit:997 */
         if (UNTAG_Bool(REGB4)) {
-          /* ./syntax//mmbuilder.nit:968 */
+          /* syntax/mmbuilder.nit:998 */
           REGB4 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AMethPropdef, ID_parser___parser_nodes___AMethPropdef)) /*cast AMethPropdef*/;
           if (UNTAG_Bool(REGB4)) {
-            /* ./syntax//mmbuilder.nit:970 */
+            /* syntax/mmbuilder.nit:1000 */
             REGB4 = TAG_Int(0);
             REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
             if (UNTAG_Bool(REGB3)) {
-              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 970);
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1000);
             }
             REGB3 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
-            /* ./../lib/standard//kernel.nit:335 */
+            /* ../lib/standard/kernel.nit:352 */
             while(1) {
               REGB5 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
               if (UNTAG_Bool(REGB5)) {
               } else {
                nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              /* ./../lib/standard//kernel.nit:215 */
+              /* ../lib/standard/kernel.nit:232 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB3));
-              /* ./../lib/standard//kernel.nit:335 */
+              /* ../lib/standard/kernel.nit:352 */
               if (UNTAG_Bool(REGB5)) {
-               /* ./syntax//mmbuilder.nit:970 */
+               /* syntax/mmbuilder.nit:1000 */
                REGB5 = REGB4;
-               /* ./syntax//mmbuilder.nit:971 */
+               /* syntax/mmbuilder.nit:1001 */
                REGB6 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
                if (UNTAG_Bool(REGB6)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 971);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1001);
                }
                fra.me.REG[10] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[4])(fra.me.REG[4], REGB5);
                REGB6 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB6)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 971);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1001);
                }
                fra.me.REG[8] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[7])(fra.me.REG[7], REGB5);
                REGB6 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[10],fra.me.REG[8]));
@@ -6683,94 +7120,94 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                }
                REGB6 = TAG_Bool(!UNTAG_Bool(REGB6));
                if (UNTAG_Bool(REGB6)) {
-               /* ./syntax//mmbuilder.nit:972 */
+               /* syntax/mmbuilder.nit:1002 */
                fra.me.REG[8] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[0])(fra.me.REG[0]);
                REGB6 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
                if (UNTAG_Bool(REGB6)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 972);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1002);
                }
                fra.me.REG[8] = CALL_parser___parser_nodes___ASignature___n_params(fra.me.REG[8])(fra.me.REG[8]);
                fra.me.REG[8] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[8])(fra.me.REG[8], REGB5);
                REGB6 = TAG_Int(7);
                fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB6);
-               if (!once_value_31) {
-               fra.me.REG[12] = BOX_NativeString("Redef error: Expected ");
+               if (!once_value_32) {
+               fra.me.REG[11] = BOX_NativeString("Redef error: Expected ");
                REGB6 = TAG_Int(22);
-               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB6);
-               once_value_31 = fra.me.REG[12];
-               register_static_object(&once_value_31);
-               } else fra.me.REG[12] = once_value_31;
-               fra.me.REG[12] = fra.me.REG[12];
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[12]);
+               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB6);
+               once_value_32 = fra.me.REG[11];
+               register_static_object(&once_value_32);
+               } else fra.me.REG[11] = once_value_32;
+               fra.me.REG[11] = fra.me.REG[11];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
                REGB6 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB6)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 972);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1002);
                }
-               fra.me.REG[12] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[7])(fra.me.REG[7], REGB5);
-               fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[12]);
-               if (!once_value_32) {
-               fra.me.REG[12] = BOX_NativeString(", as in ");
-               REGB5 = TAG_Int(8);
-               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB5);
-               once_value_32 = fra.me.REG[12];
-               register_static_object(&once_value_32);
-               } else fra.me.REG[12] = once_value_32;
-               fra.me.REG[12] = fra.me.REG[12];
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[12]);
-               fra.me.REG[12] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[9])(fra.me.REG[9]);
-               fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[12]);
+               fra.me.REG[11] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[7])(fra.me.REG[7], REGB5);
+               fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[11])(fra.me.REG[11]);
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
                if (!once_value_33) {
-               fra.me.REG[12] = BOX_NativeString("::");
-               REGB5 = TAG_Int(2);
-               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB5);
-               once_value_33 = fra.me.REG[12];
+               fra.me.REG[11] = BOX_NativeString(", as in ");
+               REGB5 = TAG_Int(8);
+               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB5);
+               once_value_33 = fra.me.REG[11];
                register_static_object(&once_value_33);
-               } else fra.me.REG[12] = once_value_33;
-               fra.me.REG[12] = fra.me.REG[12];
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[12]);
-               fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[12]);
+               } else fra.me.REG[11] = once_value_33;
+               fra.me.REG[11] = fra.me.REG[11];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
+               fra.me.REG[11] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[9])(fra.me.REG[9]);
+               fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[11])(fra.me.REG[11]);
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
                if (!once_value_34) {
-               fra.me.REG[12] = BOX_NativeString(".");
-               REGB5 = TAG_Int(1);
-               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB5);
-               once_value_34 = fra.me.REG[12];
+               fra.me.REG[11] = BOX_NativeString("::");
+               REGB5 = TAG_Int(2);
+               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB5);
+               once_value_34 = fra.me.REG[11];
                register_static_object(&once_value_34);
-               } else fra.me.REG[12] = once_value_34;
-               fra.me.REG[12] = fra.me.REG[12];
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[12]);
+               } else fra.me.REG[11] = once_value_34;
+               fra.me.REG[11] = fra.me.REG[11];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
+               fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
+               if (!once_value_35) {
+               fra.me.REG[11] = BOX_NativeString(".");
+               REGB5 = TAG_Int(1);
+               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB5);
+               once_value_35 = fra.me.REG[11];
+               register_static_object(&once_value_35);
+               } else fra.me.REG[11] = once_value_35;
+               fra.me.REG[11] = fra.me.REG[11];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
                fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
                CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8], fra.me.REG[10]);
                }
-               /* ./../lib/standard//kernel.nit:337 */
+               /* ../lib/standard/kernel.nit:354 */
                REGB5 = TAG_Int(1);
-               /* ./../lib/standard//kernel.nit:218 */
+               /* ../lib/standard/kernel.nit:235 */
                REGB5 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB5));
-               /* ./../lib/standard//kernel.nit:337 */
+               /* ../lib/standard/kernel.nit:354 */
                REGB4 = REGB5;
               } else {
-               /* ./../lib/standard//kernel.nit:335 */
-               goto label35;
+               /* ../lib/standard/kernel.nit:352 */
+               goto label36;
               }
             }
-            label35: while(0);
+            label36: while(0);
           } else {
-            /* ./syntax//mmbuilder.nit:975 */
+            /* syntax/mmbuilder.nit:1005 */
             REGB4 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AAttrPropdef, ID_parser___parser_nodes___AAttrPropdef)) /*cast AAttrPropdef*/;
             if (UNTAG_Bool(REGB4)) {
-              /* ./syntax//mmbuilder.nit:977 */
+              /* syntax/mmbuilder.nit:1007 */
               REGB4 = TAG_Int(0);
               REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
               if (UNTAG_Bool(REGB3)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 977);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1007);
               }
               fra.me.REG[10] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[4])(fra.me.REG[4], REGB4);
               REGB4 = TAG_Int(0);
               REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
               if (UNTAG_Bool(REGB3)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 977);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1007);
               }
               fra.me.REG[8] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[7])(fra.me.REG[7], REGB4);
               REGB4 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[10],fra.me.REG[8]));
@@ -6781,82 +7218,82 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
               }
               REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
               if (UNTAG_Bool(REGB4)) {
-               /* ./syntax//mmbuilder.nit:978 */
+               /* syntax/mmbuilder.nit:1008 */
                fra.me.REG[8] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[0])(fra.me.REG[0]);
                REGB4 = TAG_Int(7);
                fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
-               if (!once_value_36) {
-               fra.me.REG[12] = BOX_NativeString("Redef error: Expected ");
+               if (!once_value_37) {
+               fra.me.REG[11] = BOX_NativeString("Redef error: Expected ");
                REGB4 = TAG_Int(22);
-               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
-               once_value_36 = fra.me.REG[12];
-               register_static_object(&once_value_36);
-               } else fra.me.REG[12] = once_value_36;
-               fra.me.REG[12] = fra.me.REG[12];
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[12]);
+               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
+               once_value_37 = fra.me.REG[11];
+               register_static_object(&once_value_37);
+               } else fra.me.REG[11] = once_value_37;
+               fra.me.REG[11] = fra.me.REG[11];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
                REGB4 = TAG_Int(0);
                REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB3)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 978);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1008);
                }
-               fra.me.REG[12] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[7])(fra.me.REG[7], REGB4);
-               fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[12]);
-               if (!once_value_37) {
-               fra.me.REG[12] = BOX_NativeString(", as in the parameter of ");
-               REGB4 = TAG_Int(25);
-               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
-               once_value_37 = fra.me.REG[12];
-               register_static_object(&once_value_37);
-               } else fra.me.REG[12] = once_value_37;
-               fra.me.REG[12] = fra.me.REG[12];
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[12]);
-               fra.me.REG[12] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[9])(fra.me.REG[9]);
-               fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[12]);
+               fra.me.REG[11] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[7])(fra.me.REG[7], REGB4);
+               fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[11])(fra.me.REG[11]);
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
                if (!once_value_38) {
-               fra.me.REG[12] = BOX_NativeString("::");
-               REGB4 = TAG_Int(2);
-               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
-               once_value_38 = fra.me.REG[12];
+               fra.me.REG[11] = BOX_NativeString(", as in the parameter of ");
+               REGB4 = TAG_Int(25);
+               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
+               once_value_38 = fra.me.REG[11];
                register_static_object(&once_value_38);
-               } else fra.me.REG[12] = once_value_38;
-               fra.me.REG[12] = fra.me.REG[12];
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[12]);
-               fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[12]);
+               } else fra.me.REG[11] = once_value_38;
+               fra.me.REG[11] = fra.me.REG[11];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
+               fra.me.REG[11] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[9])(fra.me.REG[9]);
+               fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[11])(fra.me.REG[11]);
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
                if (!once_value_39) {
-               fra.me.REG[12] = BOX_NativeString(".");
-               REGB4 = TAG_Int(1);
-               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
-               once_value_39 = fra.me.REG[12];
+               fra.me.REG[11] = BOX_NativeString("::");
+               REGB4 = TAG_Int(2);
+               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
+               once_value_39 = fra.me.REG[11];
                register_static_object(&once_value_39);
-               } else fra.me.REG[12] = once_value_39;
-               fra.me.REG[12] = fra.me.REG[12];
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[12]);
+               } else fra.me.REG[11] = once_value_39;
+               fra.me.REG[11] = fra.me.REG[11];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
+               fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
+               if (!once_value_40) {
+               fra.me.REG[11] = BOX_NativeString(".");
+               REGB4 = TAG_Int(1);
+               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
+               once_value_40 = fra.me.REG[11];
+               register_static_object(&once_value_40);
+               } else fra.me.REG[11] = once_value_40;
+               fra.me.REG[11] = fra.me.REG[11];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
                fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
                CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8], fra.me.REG[10]);
               }
             } else {
-              /* ./syntax//mmbuilder.nit:982 */
-              nit_abort("Aborted", NULL, LOCATE_syntax___mmbuilder, 982);
+              /* syntax/mmbuilder.nit:1012 */
+              nit_abort("Aborted", NULL, LOCATE_syntax___mmbuilder, 1012);
             }
           }
         }
       }
-      /* ./syntax//mmbuilder.nit:986 */
+      /* syntax/mmbuilder.nit:1016 */
       REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 986);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1016);
       }
       fra.me.REG[10] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
-      /* ./syntax//mmbuilder.nit:987 */
+      /* syntax/mmbuilder.nit:1017 */
       REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 987);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1017);
       }
       fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
-      /* ./syntax//mmbuilder.nit:988 */
+      /* syntax/mmbuilder.nit:1018 */
       REGB4 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
       } else {
@@ -6888,68 +7325,68 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         REGB4 = REGB3;
       }
       if (UNTAG_Bool(REGB4)) {
-        /* ./syntax//mmbuilder.nit:989 */
+        /* syntax/mmbuilder.nit:1019 */
         REGB4 = TAG_Int(9);
-        fra.me.REG[12] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
-        if (!once_value_40) {
-          fra.me.REG[11] = BOX_NativeString("Redef error: The procedure ");
-          REGB4 = TAG_Int(27);
-          fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
-          once_value_40 = fra.me.REG[11];
-          register_static_object(&once_value_40);
-        } else fra.me.REG[11] = once_value_40;
-        fra.me.REG[11] = fra.me.REG[11];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
-        fra.me.REG[11] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
-        fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[11])(fra.me.REG[11]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
+        fra.me.REG[11] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
         if (!once_value_41) {
-          fra.me.REG[11] = BOX_NativeString("::");
-          REGB4 = TAG_Int(2);
-          fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
-          once_value_41 = fra.me.REG[11];
+          fra.me.REG[12] = BOX_NativeString("Redef error: The procedure ");
+          REGB4 = TAG_Int(27);
+          fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+          once_value_41 = fra.me.REG[12];
           register_static_object(&once_value_41);
-        } else fra.me.REG[11] = once_value_41;
-        fra.me.REG[11] = fra.me.REG[11];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
-        fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
+        } else fra.me.REG[12] = once_value_41;
+        fra.me.REG[12] = fra.me.REG[12];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
+        fra.me.REG[12] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
+        fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
         if (!once_value_42) {
-          fra.me.REG[11] = BOX_NativeString(" redefines the function ");
-          REGB4 = TAG_Int(24);
-          fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
-          once_value_42 = fra.me.REG[11];
+          fra.me.REG[12] = BOX_NativeString("::");
+          REGB4 = TAG_Int(2);
+          fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+          once_value_42 = fra.me.REG[12];
           register_static_object(&once_value_42);
-        } else fra.me.REG[11] = once_value_42;
-        fra.me.REG[11] = fra.me.REG[11];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
-        fra.me.REG[11] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[9])(fra.me.REG[9]);
-        fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[11])(fra.me.REG[11]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
+        } else fra.me.REG[12] = once_value_42;
+        fra.me.REG[12] = fra.me.REG[12];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
+        fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
         if (!once_value_43) {
-          fra.me.REG[11] = BOX_NativeString("::");
-          REGB4 = TAG_Int(2);
-          fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
-          once_value_43 = fra.me.REG[11];
+          fra.me.REG[12] = BOX_NativeString(" redefines the function ");
+          REGB4 = TAG_Int(24);
+          fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+          once_value_43 = fra.me.REG[12];
           register_static_object(&once_value_43);
-        } else fra.me.REG[11] = once_value_43;
-        fra.me.REG[11] = fra.me.REG[11];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
-        fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
+        } else fra.me.REG[12] = once_value_43;
+        fra.me.REG[12] = fra.me.REG[12];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
+        fra.me.REG[12] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[9])(fra.me.REG[9]);
+        fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
         if (!once_value_44) {
-          fra.me.REG[11] = BOX_NativeString(".");
-          REGB4 = TAG_Int(1);
-          fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
-          once_value_44 = fra.me.REG[11];
+          fra.me.REG[12] = BOX_NativeString("::");
+          REGB4 = TAG_Int(2);
+          fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+          once_value_44 = fra.me.REG[12];
           register_static_object(&once_value_44);
-        } else fra.me.REG[11] = once_value_44;
-        fra.me.REG[11] = fra.me.REG[11];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
-        fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
-        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[12]);
+        } else fra.me.REG[12] = once_value_44;
+        fra.me.REG[12] = fra.me.REG[12];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
+        fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
+        if (!once_value_45) {
+          fra.me.REG[12] = BOX_NativeString(".");
+          REGB4 = TAG_Int(1);
+          fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+          once_value_45 = fra.me.REG[12];
+          register_static_object(&once_value_45);
+        } else fra.me.REG[12] = once_value_45;
+        fra.me.REG[12] = fra.me.REG[12];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
+        fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[11])(fra.me.REG[11]);
+        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[11]);
       } else {
-        /* ./syntax//mmbuilder.nit:990 */
+        /* syntax/mmbuilder.nit:1020 */
         REGB4 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
         } else {
@@ -6981,68 +7418,68 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           REGB4 = REGB3;
         }
         if (UNTAG_Bool(REGB4)) {
-          /* ./syntax//mmbuilder.nit:991 */
+          /* syntax/mmbuilder.nit:1021 */
           REGB4 = TAG_Int(9);
-          fra.me.REG[12] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
-          if (!once_value_45) {
-            fra.me.REG[11] = BOX_NativeString("Redef error: The function ");
-            REGB4 = TAG_Int(26);
-            fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
-            once_value_45 = fra.me.REG[11];
-            register_static_object(&once_value_45);
-          } else fra.me.REG[11] = once_value_45;
-          fra.me.REG[11] = fra.me.REG[11];
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
-          fra.me.REG[11] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
-          fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[11])(fra.me.REG[11]);
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
+          fra.me.REG[11] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
           if (!once_value_46) {
-            fra.me.REG[11] = BOX_NativeString("::");
-            REGB4 = TAG_Int(2);
-            fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
-            once_value_46 = fra.me.REG[11];
+            fra.me.REG[12] = BOX_NativeString("Redef error: The function ");
+            REGB4 = TAG_Int(26);
+            fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+            once_value_46 = fra.me.REG[12];
             register_static_object(&once_value_46);
-          } else fra.me.REG[11] = once_value_46;
-          fra.me.REG[11] = fra.me.REG[11];
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
-          fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
+          } else fra.me.REG[12] = once_value_46;
+          fra.me.REG[12] = fra.me.REG[12];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
+          fra.me.REG[12] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
+          fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
           if (!once_value_47) {
-            fra.me.REG[11] = BOX_NativeString(" redefines the procedure ");
-            REGB4 = TAG_Int(25);
-            fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
-            once_value_47 = fra.me.REG[11];
+            fra.me.REG[12] = BOX_NativeString("::");
+            REGB4 = TAG_Int(2);
+            fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+            once_value_47 = fra.me.REG[12];
             register_static_object(&once_value_47);
-          } else fra.me.REG[11] = once_value_47;
-          fra.me.REG[11] = fra.me.REG[11];
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
-          fra.me.REG[11] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[9])(fra.me.REG[9]);
-          fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[11])(fra.me.REG[11]);
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
+          } else fra.me.REG[12] = once_value_47;
+          fra.me.REG[12] = fra.me.REG[12];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
+          fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
           if (!once_value_48) {
-            fra.me.REG[11] = BOX_NativeString("::");
-            REGB4 = TAG_Int(2);
-            fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
-            once_value_48 = fra.me.REG[11];
+            fra.me.REG[12] = BOX_NativeString(" redefines the procedure ");
+            REGB4 = TAG_Int(25);
+            fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+            once_value_48 = fra.me.REG[12];
             register_static_object(&once_value_48);
-          } else fra.me.REG[11] = once_value_48;
-          fra.me.REG[11] = fra.me.REG[11];
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
-          fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
+          } else fra.me.REG[12] = once_value_48;
+          fra.me.REG[12] = fra.me.REG[12];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
+          fra.me.REG[12] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[9])(fra.me.REG[9]);
+          fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
           if (!once_value_49) {
-            fra.me.REG[11] = BOX_NativeString(".");
-            REGB4 = TAG_Int(1);
-            fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB4);
-            once_value_49 = fra.me.REG[11];
+            fra.me.REG[12] = BOX_NativeString("::");
+            REGB4 = TAG_Int(2);
+            fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+            once_value_49 = fra.me.REG[12];
             register_static_object(&once_value_49);
-          } else fra.me.REG[11] = once_value_49;
-          fra.me.REG[11] = fra.me.REG[11];
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[11]);
-          fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
-          CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[12]);
+          } else fra.me.REG[12] = once_value_49;
+          fra.me.REG[12] = fra.me.REG[12];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
+          fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
+          if (!once_value_50) {
+            fra.me.REG[12] = BOX_NativeString(".");
+            REGB4 = TAG_Int(1);
+            fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB4);
+            once_value_50 = fra.me.REG[12];
+            register_static_object(&once_value_50);
+          } else fra.me.REG[12] = once_value_50;
+          fra.me.REG[12] = fra.me.REG[12];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
+          fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[11])(fra.me.REG[11]);
+          CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[11]);
         } else {
-          /* ./syntax//mmbuilder.nit:992 */
+          /* syntax/mmbuilder.nit:1022 */
           REGB4 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
           if (UNTAG_Bool(REGB4)) {
           } else {
@@ -7077,7 +7514,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (UNTAG_Bool(REGB4)) {
             REGB4 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
             if (UNTAG_Bool(REGB4)) {
-              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 992);
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1022);
             }
             REGB4 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
             REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
@@ -7086,101 +7523,101 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
             REGB4 = REGB3;
           }
           if (UNTAG_Bool(REGB4)) {
-            /* ./syntax//mmbuilder.nit:993 */
-            fra.me.REG[12] = NIT_NULL;
-            /* ./syntax//mmbuilder.nit:994 */
+            /* syntax/mmbuilder.nit:1023 */
+            fra.me.REG[11] = NIT_NULL;
+            /* syntax/mmbuilder.nit:1024 */
             REGB4 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AMethPropdef, ID_parser___parser_nodes___AMethPropdef)) /*cast AMethPropdef*/;
             if (UNTAG_Bool(REGB4)) {
-              /* ./syntax//mmbuilder.nit:995 */
-              fra.me.REG[11] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[0])(fra.me.REG[0]);
-              REGB4 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
+              /* syntax/mmbuilder.nit:1025 */
+              fra.me.REG[12] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[0])(fra.me.REG[0]);
+              REGB4 = TAG_Bool(fra.me.REG[12]==NIT_NULL);
               if (UNTAG_Bool(REGB4)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 995);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1025);
               }
-              fra.me.REG[11] = CALL_parser___parser_nodes___ASignature___n_type(fra.me.REG[11])(fra.me.REG[11]);
-              fra.me.REG[12] = fra.me.REG[11];
+              fra.me.REG[12] = CALL_parser___parser_nodes___ASignature___n_type(fra.me.REG[12])(fra.me.REG[12]);
+              fra.me.REG[11] = fra.me.REG[12];
             } else {
-              /* ./syntax//mmbuilder.nit:996 */
+              /* syntax/mmbuilder.nit:1026 */
               REGB4 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AAttrPropdef, ID_parser___parser_nodes___AAttrPropdef)) /*cast AAttrPropdef*/;
               if (UNTAG_Bool(REGB4)) {
-               /* ./syntax//mmbuilder.nit:997 */
-               fra.me.REG[11] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[0])(fra.me.REG[0]);
-               fra.me.REG[12] = fra.me.REG[11];
+               /* syntax/mmbuilder.nit:1027 */
+               fra.me.REG[12] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[0])(fra.me.REG[0]);
+               fra.me.REG[11] = fra.me.REG[12];
               } else {
-               /* ./syntax//mmbuilder.nit:998 */
+               /* syntax/mmbuilder.nit:1028 */
                REGB4 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___ATypePropdef, ID_parser___parser_nodes___ATypePropdef)) /*cast ATypePropdef*/;
                if (UNTAG_Bool(REGB4)) {
-               /* ./syntax//mmbuilder.nit:999 */
-               fra.me.REG[11] = CALL_parser___parser_nodes___ATypePropdef___n_type(fra.me.REG[0])(fra.me.REG[0]);
-               fra.me.REG[12] = fra.me.REG[11];
+               /* syntax/mmbuilder.nit:1029 */
+               fra.me.REG[12] = CALL_parser___parser_nodes___ATypePropdef___n_type(fra.me.REG[0])(fra.me.REG[0]);
+               fra.me.REG[11] = fra.me.REG[12];
                }
               }
             }
-            /* ./syntax//mmbuilder.nit:1001 */
+            /* syntax/mmbuilder.nit:1031 */
             REGB4 = TAG_Int(7);
-            fra.me.REG[11] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
-            if (!once_value_50) {
+            fra.me.REG[12] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
+            if (!once_value_51) {
               fra.me.REG[13] = BOX_NativeString("Redef error: Expected ");
               REGB4 = TAG_Int(22);
               fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB4);
-              once_value_50 = fra.me.REG[13];
-              register_static_object(&once_value_50);
-            } else fra.me.REG[13] = once_value_50;
+              once_value_51 = fra.me.REG[13];
+              register_static_object(&once_value_51);
+            } else fra.me.REG[13] = once_value_51;
             fra.me.REG[13] = fra.me.REG[13];
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[13]);
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
             fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[13]);
-            if (!once_value_51) {
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
+            if (!once_value_52) {
               fra.me.REG[13] = BOX_NativeString(", as in ");
               REGB4 = TAG_Int(8);
               fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB4);
-              once_value_51 = fra.me.REG[13];
-              register_static_object(&once_value_51);
-            } else fra.me.REG[13] = once_value_51;
+              once_value_52 = fra.me.REG[13];
+              register_static_object(&once_value_52);
+            } else fra.me.REG[13] = once_value_52;
             fra.me.REG[13] = fra.me.REG[13];
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[13]);
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
             fra.me.REG[13] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[9])(fra.me.REG[9]);
             fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[13])(fra.me.REG[13]);
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[13]);
-            if (!once_value_52) {
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
+            if (!once_value_53) {
               fra.me.REG[13] = BOX_NativeString("::");
               REGB4 = TAG_Int(2);
               fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB4);
-              once_value_52 = fra.me.REG[13];
-              register_static_object(&once_value_52);
-            } else fra.me.REG[13] = once_value_52;
+              once_value_53 = fra.me.REG[13];
+              register_static_object(&once_value_53);
+            } else fra.me.REG[13] = once_value_53;
             fra.me.REG[13] = fra.me.REG[13];
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[13]);
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
             fra.me.REG[13] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[13]);
-            if (!once_value_53) {
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
+            if (!once_value_54) {
               fra.me.REG[13] = BOX_NativeString(".");
               REGB4 = TAG_Int(1);
               fra.me.REG[13] = NEW_String_standard___string___String___with_native(fra.me.REG[13], REGB4);
-              once_value_53 = fra.me.REG[13];
-              register_static_object(&once_value_53);
-            } else fra.me.REG[13] = once_value_53;
+              once_value_54 = fra.me.REG[13];
+              register_static_object(&once_value_54);
+            } else fra.me.REG[13] = once_value_54;
             fra.me.REG[13] = fra.me.REG[13];
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[13]);
-            fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[11])(fra.me.REG[11]);
-            CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[12], fra.me.REG[11]);
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[12])(fra.me.REG[12], fra.me.REG[13]);
+            fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
+            CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[11], fra.me.REG[12]);
           } else {
-            /* ./syntax//mmbuilder.nit:1002 */
+            /* syntax/mmbuilder.nit:1032 */
             REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
             if (UNTAG_Bool(REGB4)) {
-              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1002);
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1032);
             }
             REGB4 = CALL_metamodel___static_type___MMSignature_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
             REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
             if (UNTAG_Bool(REGB4)) {
               fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___tc(fra.me.REG[1])(fra.me.REG[1]);
-              REGB4 = CALL_mmloader___ToolContext___error_count(fra.me.REG[7])(fra.me.REG[7]);
+              REGB4 = CALL_toolcontext___ToolContext___error_count(fra.me.REG[7])(fra.me.REG[7]);
               REGB3 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
               if (UNTAG_Bool(REGB3)) {
               } else {
-               /* ./../lib/standard//kernel.nit:210 */
+               /* ../lib/standard/kernel.nit:227 */
                REGB4 = TAG_Bool((REGB0)==(REGB4));
-               /* ./syntax//mmbuilder.nit:1002 */
+               /* syntax/mmbuilder.nit:1032 */
                REGB3 = REGB4;
               }
             } else {
@@ -7188,68 +7625,68 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
               REGB3 = REGB4;
             }
             if (UNTAG_Bool(REGB3)) {
-              /* ./syntax//mmbuilder.nit:1004 */
+              /* syntax/mmbuilder.nit:1034 */
               REGB3 = TAG_Int(9);
               fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
-              if (!once_value_54) {
-               fra.me.REG[11] = BOX_NativeString("Redef error: Incompatible redefinition of ");
-               REGB3 = TAG_Int(42);
-               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB3);
-               once_value_54 = fra.me.REG[11];
-               register_static_object(&once_value_54);
-              } else fra.me.REG[11] = once_value_54;
-              fra.me.REG[11] = fra.me.REG[11];
-              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[11]);
-              fra.me.REG[11] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[9])(fra.me.REG[9]);
-              fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[11])(fra.me.REG[11]);
-              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[11]);
               if (!once_value_55) {
-               fra.me.REG[11] = BOX_NativeString("::");
-               REGB3 = TAG_Int(2);
-               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB3);
-               once_value_55 = fra.me.REG[11];
+               fra.me.REG[12] = BOX_NativeString("Redef error: Incompatible redefinition of ");
+               REGB3 = TAG_Int(42);
+               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB3);
+               once_value_55 = fra.me.REG[12];
                register_static_object(&once_value_55);
-              } else fra.me.REG[11] = once_value_55;
-              fra.me.REG[11] = fra.me.REG[11];
-              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[11]);
-              fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
-              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[11]);
+              } else fra.me.REG[12] = once_value_55;
+              fra.me.REG[12] = fra.me.REG[12];
+              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[12]);
+              fra.me.REG[12] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[9])(fra.me.REG[9]);
+              fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
+              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[12]);
               if (!once_value_56) {
-               fra.me.REG[11] = BOX_NativeString(" with ");
-               REGB3 = TAG_Int(6);
-               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB3);
-               once_value_56 = fra.me.REG[11];
+               fra.me.REG[12] = BOX_NativeString("::");
+               REGB3 = TAG_Int(2);
+               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB3);
+               once_value_56 = fra.me.REG[12];
                register_static_object(&once_value_56);
-              } else fra.me.REG[11] = once_value_56;
-              fra.me.REG[11] = fra.me.REG[11];
-              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[11]);
-              fra.me.REG[11] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
-              fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[11])(fra.me.REG[11]);
-              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[11]);
+              } else fra.me.REG[12] = once_value_56;
+              fra.me.REG[12] = fra.me.REG[12];
+              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[12]);
+              fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
+              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[12]);
               if (!once_value_57) {
-               fra.me.REG[11] = BOX_NativeString("::");
-               REGB3 = TAG_Int(2);
-               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB3);
-               once_value_57 = fra.me.REG[11];
+               fra.me.REG[12] = BOX_NativeString(" with ");
+               REGB3 = TAG_Int(6);
+               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB3);
+               once_value_57 = fra.me.REG[12];
                register_static_object(&once_value_57);
-              } else fra.me.REG[11] = once_value_57;
-              fra.me.REG[11] = fra.me.REG[11];
-              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[11]);
-              fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[11]);
+              } else fra.me.REG[12] = once_value_57;
+              fra.me.REG[12] = fra.me.REG[12];
+              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[12]);
+              fra.me.REG[12] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
+              fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
+              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[12]);
               if (!once_value_58) {
-               fra.me.REG[11] = BOX_NativeString("");
-               REGB3 = TAG_Int(0);
-               fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB3);
-               once_value_58 = fra.me.REG[11];
+               fra.me.REG[12] = BOX_NativeString("::");
+               REGB3 = TAG_Int(2);
+               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB3);
+               once_value_58 = fra.me.REG[12];
                register_static_object(&once_value_58);
-              } else fra.me.REG[11] = once_value_58;
-              fra.me.REG[11] = fra.me.REG[11];
-              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[11]);
+              } else fra.me.REG[12] = once_value_58;
+              fra.me.REG[12] = fra.me.REG[12];
+              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[12]);
+              fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[12]);
+              if (!once_value_59) {
+               fra.me.REG[12] = BOX_NativeString("");
+               REGB3 = TAG_Int(0);
+               fra.me.REG[12] = NEW_String_standard___string___String___with_native(fra.me.REG[12], REGB3);
+               once_value_59 = fra.me.REG[12];
+               register_static_object(&once_value_59);
+              } else fra.me.REG[12] = once_value_59;
+              fra.me.REG[12] = fra.me.REG[12];
+              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[12]);
               fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
               CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[7]);
             } else {
-              /* ./syntax//mmbuilder.nit:1005 */
+              /* syntax/mmbuilder.nit:1035 */
               REGB3 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
               if (UNTAG_Bool(REGB3)) {
               } else {
@@ -7306,50 +7743,50 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                REGB3 = REGB4;
               }
               if (UNTAG_Bool(REGB3)) {
-               /* ./syntax//mmbuilder.nit:1007 */
+               /* syntax/mmbuilder.nit:1037 */
                REGB3 = TAG_Int(7);
                fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
-               if (!once_value_59) {
+               if (!once_value_60) {
                fra.me.REG[7] = BOX_NativeString("Redef warning: Expected ");
                REGB3 = TAG_Int(24);
                fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB3);
-               once_value_59 = fra.me.REG[7];
-               register_static_object(&once_value_59);
-               } else fra.me.REG[7] = once_value_59;
+               once_value_60 = fra.me.REG[7];
+               register_static_object(&once_value_60);
+               } else fra.me.REG[7] = once_value_60;
                fra.me.REG[7] = fra.me.REG[7];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[7]);
                fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
-               if (!once_value_60) {
+               if (!once_value_61) {
                fra.me.REG[8] = BOX_NativeString(", as in ");
                REGB3 = TAG_Int(8);
                fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
-               once_value_60 = fra.me.REG[8];
-               register_static_object(&once_value_60);
-               } else fra.me.REG[8] = once_value_60;
+               once_value_61 = fra.me.REG[8];
+               register_static_object(&once_value_61);
+               } else fra.me.REG[8] = once_value_61;
                fra.me.REG[8] = fra.me.REG[8];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
                fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[9])(fra.me.REG[9]);
                fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
-               if (!once_value_61) {
+               if (!once_value_62) {
                fra.me.REG[8] = BOX_NativeString("::");
                REGB3 = TAG_Int(2);
                fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB3);
-               once_value_61 = fra.me.REG[8];
-               register_static_object(&once_value_61);
-               } else fra.me.REG[8] = once_value_61;
+               once_value_62 = fra.me.REG[8];
+               register_static_object(&once_value_62);
+               } else fra.me.REG[8] = once_value_62;
                fra.me.REG[8] = fra.me.REG[8];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
                fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[9]);
-               if (!once_value_62) {
+               if (!once_value_63) {
                fra.me.REG[9] = BOX_NativeString(".");
                REGB3 = TAG_Int(1);
                fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB3);
-               once_value_62 = fra.me.REG[9];
-               register_static_object(&once_value_62);
-               } else fra.me.REG[9] = once_value_62;
+               once_value_63 = fra.me.REG[9];
+               register_static_object(&once_value_63);
+               } else fra.me.REG[9] = once_value_63;
                fra.me.REG[9] = fra.me.REG[9];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[9]);
                fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
@@ -7359,27 +7796,27 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           }
         }
       }
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = REGB3;
     } else {
-      /* ./../lib/standard//collection//array.nit:235 */
-      goto label63;
+      /* ../lib/standard/collection/array.nit:272 */
+      goto label64;
     }
   }
-  label63: while(0);
+  label64: while(0);
   label11: while(0);
-  /* ./syntax//mmbuilder.nit:1011 */
+  /* syntax/mmbuilder.nit:1041 */
   REGB2 = TAG_Int(1);
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ../lib/standard/kernel.nit:227 */
     REGB2 = TAG_Bool((REGB1)==(REGB2));
-    /* ./syntax//mmbuilder.nit:1011 */
+    /* syntax/mmbuilder.nit:1041 */
     REGB3 = REGB2;
   }
   REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
@@ -7388,9 +7825,9 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     REGB2 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB1));
     if (UNTAG_Bool(REGB2)) {
     } else {
-      /* ./../lib/standard//kernel.nit:210 */
+      /* ../lib/standard/kernel.nit:227 */
       REGB1 = TAG_Bool((REGB3)==(REGB1));
-      /* ./syntax//mmbuilder.nit:1011 */
+      /* syntax/mmbuilder.nit:1041 */
       REGB2 = REGB1;
     }
     REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
@@ -7399,45 +7836,45 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:1012 */
+    /* syntax/mmbuilder.nit:1042 */
     REGB2 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
-    if (!once_value_64) {
+    if (!once_value_65) {
       fra.me.REG[6] = BOX_NativeString("Redef error: ");
       REGB2 = TAG_Int(13);
       fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
-      once_value_64 = fra.me.REG[6];
-      register_static_object(&once_value_64);
-    } else fra.me.REG[6] = once_value_64;
+      once_value_65 = fra.me.REG[6];
+      register_static_object(&once_value_65);
+    } else fra.me.REG[6] = once_value_65;
     fra.me.REG[6] = fra.me.REG[6];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
     fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
-    if (!once_value_65) {
+    if (!once_value_66) {
       fra.me.REG[6] = BOX_NativeString("::");
       REGB2 = TAG_Int(2);
       fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
-      once_value_65 = fra.me.REG[6];
-      register_static_object(&once_value_65);
-    } else fra.me.REG[6] = once_value_65;
+      once_value_66 = fra.me.REG[6];
+      register_static_object(&once_value_66);
+    } else fra.me.REG[6] = once_value_66;
     fra.me.REG[6] = fra.me.REG[6];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
     fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
-    if (!once_value_66) {
+    if (!once_value_67) {
       fra.me.REG[2] = BOX_NativeString(" redefinition cannot change visibility.");
       REGB2 = TAG_Int(39);
       fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
-      once_value_66 = fra.me.REG[2];
-      register_static_object(&once_value_66);
-    } else fra.me.REG[2] = once_value_66;
+      once_value_67 = fra.me.REG[2];
+      register_static_object(&once_value_67);
+    } else fra.me.REG[2] = once_value_67;
     fra.me.REG[2] = fra.me.REG[2];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
   }
-  /* ./syntax//mmbuilder.nit:1014 */
+  /* syntax/mmbuilder.nit:1044 */
   fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
   REGB2 = TAG_Bool(true);
   CALL_syntax___syntax_base___MMGlobalProperty___check_visibility(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[0], fra.me.REG[4], REGB2);
@@ -7450,13 +7887,14 @@ val_t syntax___mmbuilder___AAttrPropdef___readmethod(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1019;
+  fra.me.line = 1049;
   fra.me.meth = LOCATE_syntax___mmbuilder___AAttrPropdef___readmethod;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1019 */
+  /* syntax/mmbuilder.nit:1049 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___AAttrPropdef____readmethod(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -7466,13 +7904,14 @@ val_t syntax___mmbuilder___AAttrPropdef___writemethod(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1020;
+  fra.me.line = 1050;
   fra.me.meth = LOCATE_syntax___mmbuilder___AAttrPropdef___writemethod;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1020 */
+  /* syntax/mmbuilder.nit:1050 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___AAttrPropdef____writemethod(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -7483,20 +7922,21 @@ val_t syntax___mmbuilder___AAttrPropdef___prop(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1022;
+  fra.me.line = 1052;
   fra.me.meth = LOCATE_syntax___mmbuilder___AAttrPropdef___prop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1022 */
+  /* syntax/mmbuilder.nit:1052 */
   fra.me.REG[1] = fra.me.REG[0];
   fra.me.REG[1] = ATTR_syntax___mmbuilder___AAttrPropdef____prop(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1022);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1052);
   }
   goto label1;
   label1: while(0);
@@ -7514,10 +7954,11 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
       static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1024;
+  fra.me.line = 1054;
   fra.me.meth = LOCATE_syntax___mmbuilder___AAttrPropdef___accept_property_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -7526,12 +7967,12 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1024 */
+  /* syntax/mmbuilder.nit:1054 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1026 */
+  /* syntax/mmbuilder.nit:1056 */
   CALL_SUPER_syntax___mmbuilder___AAttrPropdef___accept_property_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1028 */
+  /* syntax/mmbuilder.nit:1058 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7547,15 +7988,15 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1029 */
+    /* syntax/mmbuilder.nit:1059 */
     fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1029);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1059);
     }
     fra.me.REG[1] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
   } else {
-    /* ./syntax//mmbuilder.nit:1031 */
+    /* syntax/mmbuilder.nit:1061 */
     if (!once_value_1) {
       fra.me.REG[0] = BOX_NativeString("@");
       REGB0 = TAG_Int(1);
@@ -7567,23 +8008,23 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
     fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_id2(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1031);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1061);
     }
-    fra.me.REG[4] = CALL_parser___lexer___Token___text(fra.me.REG[4])(fra.me.REG[4]);
+    fra.me.REG[4] = CALL_parser___parser_nodes___Token___text(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[4] = CALL_standard___string___String_____plus(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[1] = fra.me.REG[4];
   }
-  /* ./syntax//mmbuilder.nit:1033 */
+  /* syntax/mmbuilder.nit:1063 */
   fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:1034 */
+  /* syntax/mmbuilder.nit:1064 */
   fra.me.REG[0] = NEW_MMSrcAttribute_syntax___syntax_base___MMSrcAttribute___init(fra.me.REG[1], fra.me.REG[4], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1035 */
+  /* syntax/mmbuilder.nit:1065 */
   ATTR_syntax___mmbuilder___AAttrPropdef____prop(fra.me.REG[2]) = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:1036 */
+  /* syntax/mmbuilder.nit:1066 */
   fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   CALL_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3], fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:1038 */
+  /* syntax/mmbuilder.nit:1068 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_readable(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7617,7 +8058,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1039 */
+    /* syntax/mmbuilder.nit:1069 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -7633,36 +8074,36 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:1040 */
+      /* syntax/mmbuilder.nit:1070 */
       fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1040);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1070);
       }
-      fra.me.REG[0] = CALL_parser___lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
+      fra.me.REG[0] = CALL_parser___parser_nodes___Token___text(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = TAG_Int(1);
       fra.me.REG[0] = CALL_standard___string___AbstractString___substring_from(fra.me.REG[0])(fra.me.REG[0], REGB0);
       fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[1] = fra.me.REG[0];
     } else {
-      /* ./syntax//mmbuilder.nit:1042 */
+      /* syntax/mmbuilder.nit:1072 */
       fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_id2(fra.me.REG[2])(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1042);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1072);
       }
       fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[1] = fra.me.REG[0];
     }
-    /* ./syntax//mmbuilder.nit:1044 */
+    /* syntax/mmbuilder.nit:1074 */
     fra.me.REG[0] = NEW_MMReadImplementationMethod_syntax___syntax_base___MMReadImplementationMethod___init(fra.me.REG[1], fra.me.REG[4], fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:1045 */
+    /* syntax/mmbuilder.nit:1075 */
     ATTR_syntax___mmbuilder___AAttrPropdef____readmethod(fra.me.REG[2]) = fra.me.REG[0];
-    /* ./syntax//mmbuilder.nit:1046 */
+    /* syntax/mmbuilder.nit:1076 */
     fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
     CALL_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3], fra.me.REG[0]);
   }
-  /* ./syntax//mmbuilder.nit:1048 */
+  /* syntax/mmbuilder.nit:1078 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7696,7 +8137,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1049 */
+    /* syntax/mmbuilder.nit:1079 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -7712,13 +8153,13 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:1050 */
+      /* syntax/mmbuilder.nit:1080 */
       fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1050);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1080);
       }
-      fra.me.REG[0] = CALL_parser___lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
+      fra.me.REG[0] = CALL_parser___parser_nodes___Token___text(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = TAG_Int(1);
       fra.me.REG[0] = CALL_standard___string___AbstractString___substring_from(fra.me.REG[0])(fra.me.REG[0], REGB0);
       if (!once_value_2) {
@@ -7733,13 +8174,13 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
       fra.me.REG[5] = CALL_standard___symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
       fra.me.REG[1] = fra.me.REG[5];
     } else {
-      /* ./syntax//mmbuilder.nit:1052 */
+      /* syntax/mmbuilder.nit:1082 */
       fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_id2(fra.me.REG[2])(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1052);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1082);
       }
-      fra.me.REG[5] = CALL_parser___lexer___Token___text(fra.me.REG[5])(fra.me.REG[5]);
+      fra.me.REG[5] = CALL_parser___parser_nodes___Token___text(fra.me.REG[5])(fra.me.REG[5]);
       if (!once_value_3) {
         fra.me.REG[0] = BOX_NativeString("=");
         REGB0 = TAG_Int(1);
@@ -7752,11 +8193,11 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
       fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[1] = fra.me.REG[0];
     }
-    /* ./syntax//mmbuilder.nit:1054 */
+    /* syntax/mmbuilder.nit:1084 */
     fra.me.REG[4] = NEW_MMWriteImplementationMethod_syntax___syntax_base___MMWriteImplementationMethod___init(fra.me.REG[1], fra.me.REG[4], fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:1055 */
+    /* syntax/mmbuilder.nit:1085 */
     ATTR_syntax___mmbuilder___AAttrPropdef____writemethod(fra.me.REG[2]) = fra.me.REG[4];
-    /* ./syntax//mmbuilder.nit:1056 */
+    /* syntax/mmbuilder.nit:1086 */
     fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
     CALL_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
   }
@@ -7777,10 +8218,11 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
       static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1060;
+  fra.me.line = 1090;
   fra.me.meth = LOCATE_syntax___mmbuilder___AAttrPropdef___accept_property_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -7790,54 +8232,97 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1060 */
+  /* syntax/mmbuilder.nit:1090 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1062 */
+  /* syntax/mmbuilder.nit:1092 */
   CALL_SUPER_syntax___mmbuilder___AAttrPropdef___accept_property_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1064 */
-  fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[2])(fra.me.REG[2]);
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  /* syntax/mmbuilder.nit:1093 */
+  fra.me.REG[1] = NIT_NULL;
+  /* syntax/mmbuilder.nit:1094 */
+  fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1065 */
-    fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[2])(fra.me.REG[2]);
-    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    /* syntax/mmbuilder.nit:1095 */
+    fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1065);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1095);
     }
-    fra.me.REG[1] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-    /* ./syntax//mmbuilder.nit:1066 */
-    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    fra.me.REG[4] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+    /* syntax/mmbuilder.nit:1096 */
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(false);
         REGB0 = REGB1;
       } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
         REGB0 = REGB1;
       }
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
+      fra.me.REG[1] = fra.me.REG[4];
     } else {
       goto label1;
     }
   } else {
-    /* ./syntax//mmbuilder.nit:1068 */
+    /* syntax/mmbuilder.nit:1097 */
+    fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* syntax/mmbuilder.nit:1098 */
+      fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+      REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1098);
+      }
+      fra.me.REG[4] = CALL_syntax___mmbuilder___AExpr___get_easy_stype(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+      fra.me.REG[1] = fra.me.REG[4];
+    }
+  }
+  /* syntax/mmbuilder.nit:1101 */
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* syntax/mmbuilder.nit:1102 */
     REGB0 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_2) {
@@ -7876,22 +8361,22 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
-    /* ./syntax//mmbuilder.nit:1069 */
+    /* syntax/mmbuilder.nit:1103 */
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:1072 */
+  /* syntax/mmbuilder.nit:1106 */
   fra.me.REG[4] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1073 */
+  /* syntax/mmbuilder.nit:1107 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
   fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[6] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[6])(fra.me.REG[6]);
   fra.me.REG[6] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[5], fra.me.REG[1], fra.me.REG[6]);
-  /* ./syntax//mmbuilder.nit:1074 */
+  /* syntax/mmbuilder.nit:1108 */
   CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
-  /* ./syntax//mmbuilder.nit:1075 */
+  /* syntax/mmbuilder.nit:1109 */
   fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[5])(fra.me.REG[5]);
-  /* ./syntax//mmbuilder.nit:1076 */
+  /* syntax/mmbuilder.nit:1110 */
   fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
@@ -7926,7 +8411,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
     REGB1 = REGB2;
   }
   CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], REGB1, REGB0);
-  /* ./syntax//mmbuilder.nit:1077 */
+  /* syntax/mmbuilder.nit:1111 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_readable(fra.me.REG[2])(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
@@ -7960,16 +8445,16 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
-    /* ./syntax//mmbuilder.nit:1078 */
+    /* syntax/mmbuilder.nit:1112 */
     fra.me.REG[4] = ATTR_syntax___mmbuilder___AAttrPropdef____readmethod(fra.me.REG[2]);
     REGB1 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1078);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1112);
     }
-    /* ./syntax//mmbuilder.nit:1079 */
+    /* syntax/mmbuilder.nit:1113 */
     CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
-    /* ./syntax//mmbuilder.nit:1080 */
+    /* syntax/mmbuilder.nit:1114 */
     fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_readable(fra.me.REG[2])(fra.me.REG[2]);
     REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
@@ -7988,7 +8473,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
       fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_readable(fra.me.REG[2])(fra.me.REG[2]);
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1080);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1114);
       }
       fra.me.REG[6] = CALL_parser___parser_nodes___AAble___n_kwredef(fra.me.REG[6])(fra.me.REG[6]);
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
@@ -8046,15 +8531,31 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
       REGB1 = REGB2;
     }
     CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], REGB1, REGB0);
-    /* ./syntax//mmbuilder.nit:1081 */
+    /* syntax/mmbuilder.nit:1115 */
     fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[2])(fra.me.REG[2]);
     REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1081);
+    } else {
+      REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+      if (UNTAG_Bool(REGB2)) {
+        REGB2 = TAG_Bool(false);
+        REGB1 = REGB2;
+      } else {
+        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+        REGB1 = REGB2;
+      }
+    }
+    REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+    if (UNTAG_Bool(REGB1)) {
+      fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[2])(fra.me.REG[2]);
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1115);
+      }
+      CALL_syntax___mmbuilder___AType___check_visibility(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3], fra.me.REG[4]);
     }
-    CALL_syntax___mmbuilder___AType___check_visibility(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3], fra.me.REG[4]);
   }
-  /* ./syntax//mmbuilder.nit:1083 */
+  /* syntax/mmbuilder.nit:1117 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
@@ -8088,14 +8589,14 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
-    /* ./syntax//mmbuilder.nit:1084 */
+    /* syntax/mmbuilder.nit:1118 */
     fra.me.REG[4] = ATTR_syntax___mmbuilder___AAttrPropdef____writemethod(fra.me.REG[2]);
     REGB1 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1084);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1118);
     }
-    /* ./syntax//mmbuilder.nit:1085 */
+    /* syntax/mmbuilder.nit:1119 */
     REGB1 = TAG_Int(0);
     fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
     if (!once_value_5) {
@@ -8119,7 +8620,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
     fra.me.REG[6] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[6])(fra.me.REG[6]);
     fra.me.REG[6] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[0], NIT_NULL, fra.me.REG[6]);
     CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
-    /* ./syntax//mmbuilder.nit:1087 */
+    /* syntax/mmbuilder.nit:1121 */
     fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
     REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
@@ -8134,7 +8635,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
       }
     }
     if (UNTAG_Bool(REGB1)) {
-      /* ./syntax//mmbuilder.nit:1088 */
+      /* syntax/mmbuilder.nit:1122 */
       fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
@@ -8155,18 +8656,18 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
         fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
         REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1088);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1122);
         }
         fra.me.REG[6] = CALL_parser___parser_nodes___AAble___n_visibility(fra.me.REG[6])(fra.me.REG[6]);
         REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1088);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1122);
         }
         REGB1 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[6])(fra.me.REG[6]);
         REGB0 = REGB1;
       }
     }
-    /* ./syntax//mmbuilder.nit:1090 */
+    /* syntax/mmbuilder.nit:1124 */
     fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
     REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
@@ -8185,7 +8686,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
       fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1090);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1124);
       }
       fra.me.REG[6] = CALL_parser___parser_nodes___AAble___n_kwredef(fra.me.REG[6])(fra.me.REG[6]);
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
@@ -8206,13 +8707,29 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
       REGB1 = REGB2;
     }
     CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], REGB1, REGB0);
-    /* ./syntax//mmbuilder.nit:1091 */
-    fra.me.REG[2] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[2])(fra.me.REG[2]);
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    /* syntax/mmbuilder.nit:1125 */
+    fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1091);
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      fra.me.REG[2] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[2])(fra.me.REG[2]);
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1125);
+      }
+      CALL_syntax___mmbuilder___AType___check_visibility(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
     }
-    CALL_syntax___mmbuilder___AType___check_visibility(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -8223,25 +8740,26 @@ void syntax___mmbuilder___AAttrPropdef___accept_abs_syntax_visitor(val_t p0, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1095;
+  fra.me.line = 1129;
   fra.me.meth = LOCATE_syntax___mmbuilder___AAttrPropdef___accept_abs_syntax_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1095 */
+  /* syntax/mmbuilder.nit:1129 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1097 */
+  /* syntax/mmbuilder.nit:1131 */
   fra.me.REG[2] = ATTR_syntax___mmbuilder___AAttrPropdef____prop(fra.me.REG[2]);
   CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1098 */
+  /* syntax/mmbuilder.nit:1132 */
   CALL_SUPER_syntax___mmbuilder___AAttrPropdef___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1099 */
+  /* syntax/mmbuilder.nit:1133 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property__eq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
   stack_frame_head = fra.me.prev;
   return;
@@ -8251,13 +8769,14 @@ val_t syntax___mmbuilder___AMethPropdef___name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1104;
+  fra.me.line = 1138;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMethPropdef___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1104 */
+  /* syntax/mmbuilder.nit:1138 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___AMethPropdef____name(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -8268,20 +8787,21 @@ val_t syntax___mmbuilder___AMethPropdef___method(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1108;
+  fra.me.line = 1142;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMethPropdef___method;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1108 */
+  /* syntax/mmbuilder.nit:1142 */
   fra.me.REG[1] = fra.me.REG[0];
   fra.me.REG[1] = ATTR_syntax___mmbuilder___AMethPropdef____method(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1108);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1142);
   }
   goto label1;
   label1: while(0);
@@ -8304,10 +8824,11 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
           static val_t once_value_8; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1110;
+  fra.me.line = 1144;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMethPropdef___accept_property_builder;
   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;
@@ -8315,12 +8836,12 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1110 */
+  /* syntax/mmbuilder.nit:1144 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1112 */
+  /* syntax/mmbuilder.nit:1146 */
   CALL_SUPER_syntax___mmbuilder___AMethPropdef___accept_property_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1114 */
+  /* syntax/mmbuilder.nit:1148 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AMethPropdef___n_methid(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -8335,10 +8856,10 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1115 */
-    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AConcreteInitPropdef, ID_parser___parser_nodes___AConcreteInitPropdef)) /*cast AConcreteInitPropdef*/;
+    /* syntax/mmbuilder.nit:1149 */
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AInitPropdef, ID_parser___parser_nodes___AInitPropdef)) /*cast AInitPropdef*/;
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:1116 */
+      /* syntax/mmbuilder.nit:1150 */
       if (!once_value_1) {
         if (!once_value_2) {
           fra.me.REG[1] = BOX_NativeString("init");
@@ -8354,7 +8875,7 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
       } else fra.me.REG[1] = once_value_1;
       fra.me.REG[1] = fra.me.REG[1];
     } else {
-      /* ./syntax//mmbuilder.nit:1118 */
+      /* syntax/mmbuilder.nit:1152 */
       if (!once_value_3) {
         if (!once_value_4) {
           fra.me.REG[4] = BOX_NativeString("main");
@@ -8372,24 +8893,24 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
       fra.me.REG[1] = fra.me.REG[4];
     }
   } else {
-    /* ./syntax//mmbuilder.nit:1121 */
+    /* syntax/mmbuilder.nit:1155 */
     fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_methid(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1121);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1155);
     }
     fra.me.REG[4] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[4])(fra.me.REG[4]);
     REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1121);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1155);
     }
     fra.me.REG[1] = fra.me.REG[4];
-    /* ./syntax//mmbuilder.nit:1123 */
+    /* syntax/mmbuilder.nit:1157 */
     fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_methid(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1123);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1157);
     }
     fra.me.REG[4] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[4])(fra.me.REG[4]);
     if (!once_value_5) {
@@ -8419,9 +8940,9 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
       }
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:1124 */
+      /* syntax/mmbuilder.nit:1158 */
       fra.me.REG[0] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[2])(fra.me.REG[2]);
-      /* ./syntax//mmbuilder.nit:1125 */
+      /* syntax/mmbuilder.nit:1159 */
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -8438,7 +8959,7 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
       if (UNTAG_Bool(REGB0)) {
         REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1125);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1159);
         }
         fra.me.REG[0] = CALL_parser___parser_nodes___ASignature___n_params(fra.me.REG[0])(fra.me.REG[0]);
         REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
@@ -8446,9 +8967,9 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
         REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
         if (UNTAG_Bool(REGB2)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ../lib/standard/kernel.nit:227 */
           REGB1 = TAG_Bool((REGB0)==(REGB1));
-          /* ./syntax//mmbuilder.nit:1125 */
+          /* syntax/mmbuilder.nit:1159 */
           REGB2 = REGB1;
         }
       } else {
@@ -8456,7 +8977,7 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
         REGB2 = REGB1;
       }
       if (UNTAG_Bool(REGB2)) {
-        /* ./syntax//mmbuilder.nit:1126 */
+        /* syntax/mmbuilder.nit:1160 */
         if (!once_value_7) {
           if (!once_value_8) {
             fra.me.REG[0] = BOX_NativeString("unary -");
@@ -8475,14 +8996,14 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
       }
     }
   }
-  /* ./syntax//mmbuilder.nit:1130 */
+  /* syntax/mmbuilder.nit:1164 */
   ATTR_syntax___mmbuilder___AMethPropdef____name(fra.me.REG[2]) = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1131 */
+  /* syntax/mmbuilder.nit:1165 */
   fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[0] = NEW_MMMethSrcMethod_syntax___syntax_base___MMMethSrcMethod___init(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1132 */
+  /* syntax/mmbuilder.nit:1166 */
   ATTR_syntax___mmbuilder___AMethPropdef____method(fra.me.REG[2]) = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:1133 */
+  /* syntax/mmbuilder.nit:1167 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   CALL_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -8497,10 +9018,11 @@ void syntax___mmbuilder___AMethPropdef___accept_property_verifier(val_t p0, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1136;
+  fra.me.line = 1170;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMethPropdef___accept_property_verifier;
   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;
@@ -8508,21 +9030,21 @@ void syntax___mmbuilder___AMethPropdef___accept_property_verifier(val_t p0, val_
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1136 */
+  /* syntax/mmbuilder.nit:1170 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1138 */
+  /* syntax/mmbuilder.nit:1172 */
   fra.me.REG[4] = NEW_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init();
   CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:1139 */
+  /* syntax/mmbuilder.nit:1173 */
   CALL_SUPER_syntax___mmbuilder___AMethPropdef___accept_property_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1141 */
+  /* syntax/mmbuilder.nit:1175 */
   fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = CALL_syntax___mmbuilder___SignatureBuilder___has_error_occured(fra.me.REG[1])(fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:1143 */
+  /* syntax/mmbuilder.nit:1177 */
   fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[1] = CALL_syntax___mmbuilder___SignatureBuilder___signature(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
@@ -8539,20 +9061,20 @@ void syntax___mmbuilder___AMethPropdef___accept_property_verifier(val_t p0, val_
   }
   if (UNTAG_Bool(REGB0)) {
   } else {
-    /* ./syntax//mmbuilder.nit:1146 */
+    /* syntax/mmbuilder.nit:1180 */
     fra.me.REG[1] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[4] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
     fra.me.REG[4] = CALL_syntax___mmbuilder___SignatureBuilder___signature(fra.me.REG[4])(fra.me.REG[4]);
     REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1146);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1180);
     }
     CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   }
-  /* ./syntax//mmbuilder.nit:1148 */
+  /* syntax/mmbuilder.nit:1182 */
   REGB0 = TAG_Int(1);
-  /* ./syntax//mmbuilder.nit:1149 */
+  /* syntax/mmbuilder.nit:1183 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
@@ -8571,7 +9093,7 @@ void syntax___mmbuilder___AMethPropdef___accept_property_verifier(val_t p0, val_
     fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
     REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1149);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1183);
     }
     REGB1 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[4])(fra.me.REG[4]);
     REGB2 = TAG_Int(1);
@@ -8580,24 +9102,24 @@ void syntax___mmbuilder___AMethPropdef___accept_property_verifier(val_t p0, val_
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:217 */
+    /* ../lib/standard/kernel.nit:234 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
   } else {
-    /* ./syntax//mmbuilder.nit:1149 */
+    /* syntax/mmbuilder.nit:1183 */
     REGB1 = TAG_Bool(false);
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:1150 */
+    /* syntax/mmbuilder.nit:1184 */
     fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
     REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1150);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1184);
     }
     REGB2 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[4])(fra.me.REG[4]);
     REGB0 = REGB2;
   }
-  /* ./syntax//mmbuilder.nit:1152 */
+  /* syntax/mmbuilder.nit:1186 */
   fra.me.REG[4] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[1] = CALL_parser___parser_nodes___AMethPropdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
   REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
@@ -8614,7 +9136,7 @@ void syntax___mmbuilder___AMethPropdef___accept_property_verifier(val_t p0, val_
   }
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], REGB2, REGB0);
-  /* ./syntax//mmbuilder.nit:1153 */
+  /* syntax/mmbuilder.nit:1187 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -8634,7 +9156,7 @@ void syntax___mmbuilder___AMethPropdef___accept_property_verifier(val_t p0, val_
     fra.me.REG[2] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1153);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1187);
     }
     CALL_syntax___mmbuilder___ASignature___check_visibility(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3], fra.me.REG[2]);
   }
@@ -8647,25 +9169,26 @@ void syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor(val_t p0, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1156;
+  fra.me.line = 1190;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1156 */
+  /* syntax/mmbuilder.nit:1190 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1158 */
+  /* syntax/mmbuilder.nit:1192 */
   fra.me.REG[2] = ATTR_syntax___mmbuilder___AMethPropdef____method(fra.me.REG[2]);
   CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1159 */
+  /* syntax/mmbuilder.nit:1193 */
   CALL_SUPER_syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1160 */
+  /* syntax/mmbuilder.nit:1194 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property__eq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
   stack_frame_head = fra.me.prev;
   return;
@@ -8677,10 +9200,11 @@ void syntax___mmbuilder___AMainMethPropdef___process_and_check(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1165;
+  fra.me.line = 1199;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMainMethPropdef___process_and_check;
   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;
@@ -8689,10 +9213,10 @@ void syntax___mmbuilder___AMainMethPropdef___process_and_check(val_t p0, val_t p
   fra.me.REG[2] = p2;
   REGB0 = p3;
   REGB1 = p4;
-  /* ./syntax//mmbuilder.nit:1167 */
+  /* syntax/mmbuilder.nit:1201 */
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
   CALL_metamodel___abstractmetamodel___MMGlobalProperty___visibility_level__eq(fra.me.REG[0])(fra.me.REG[0], REGB1);
-  /* ./syntax//mmbuilder.nit:1168 */
+  /* syntax/mmbuilder.nit:1202 */
   fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
   fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
@@ -8701,36 +9225,30 @@ void syntax___mmbuilder___AMainMethPropdef___process_and_check(val_t p0, val_t p
   stack_frame_head = fra.me.prev;
   return;
 }
-void syntax___mmbuilder___AExternMethPropdef___accept_property_verifier(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+void syntax___mmbuilder___AExternPropdef___accept_property_verifier(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
   val_t tmp;
-    static val_t once_value_1; /* Once value */
-    static val_t once_value_2; /* Once value */
-    static val_t once_value_3; /* Once value */
-    static val_t once_value_4; /* Once value */
-    static val_t once_value_5; /* Once value */
-    static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1174;
-  fra.me.meth = LOCATE_syntax___mmbuilder___AExternMethPropdef___accept_property_verifier;
+  fra.me.line = 1208;
+  fra.me.meth = LOCATE_syntax___mmbuilder___AExternPropdef___accept_property_verifier;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  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[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1174 */
+  /* syntax/mmbuilder.nit:1208 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:1176 */
-  CALL_SUPER_syntax___mmbuilder___AExternMethPropdef___accept_property_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1178 */
-  fra.me.REG[1] = CALL_parser___parser_nodes___AExternMethPropdef___n_extern(fra.me.REG[2])(fra.me.REG[2]);
+  /* syntax/mmbuilder.nit:1210 */
+  CALL_SUPER_syntax___mmbuilder___AExternPropdef___accept_property_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* syntax/mmbuilder.nit:1212 */
+  fra.me.REG[1] = CALL_parser___parser_nodes___AExternPropdef___n_extern(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -8745,119 +9263,36 @@ void syntax___mmbuilder___AExternMethPropdef___accept_property_verifier(val_t p0
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1179 */
-    fra.me.REG[1] = CALL_parser___parser_nodes___AExternMethPropdef___n_extern(fra.me.REG[2])(fra.me.REG[2]);
+    /* syntax/mmbuilder.nit:1213 */
+    fra.me.REG[1] = CALL_parser___parser_nodes___AExternPropdef___n_extern(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1179);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1213);
     }
-    fra.me.REG[1] = CALL_parser___lexer___Token___text(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./syntax//mmbuilder.nit:1180 */
+    fra.me.REG[1] = CALL_parser___parser_nodes___Token___text(fra.me.REG[1])(fra.me.REG[1]);
+    /* syntax/mmbuilder.nit:1214 */
     REGB0 = TAG_Int(1);
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-    /* ./syntax//mmbuilder.nit:1180 */
+    /* syntax/mmbuilder.nit:1214 */
     REGB2 = TAG_Int(2);
-    /* ./../lib/standard//kernel.nit:220 */
+    /* ../lib/standard/kernel.nit:237 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-    /* ./syntax//mmbuilder.nit:1180 */
+    /* syntax/mmbuilder.nit:1214 */
     fra.me.REG[0] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
     fra.me.REG[1] = fra.me.REG[0];
   } else {
-    /* ./syntax//mmbuilder.nit:1182 */
-    REGB2 = TAG_Int(11);
-    fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
-    if (!once_value_1) {
-      fra.me.REG[3] = BOX_NativeString("");
-      REGB2 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
-      once_value_1 = fra.me.REG[3];
-      register_static_object(&once_value_1);
-    } else fra.me.REG[3] = once_value_1;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    fra.me.REG[3] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
-    fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
-    fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMModule___name(fra.me.REG[3])(fra.me.REG[3]);
-    fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    if (!once_value_2) {
-      fra.me.REG[3] = BOX_NativeString("_");
-      REGB2 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
-      once_value_2 = fra.me.REG[3];
-      register_static_object(&once_value_2);
-    } else fra.me.REG[3] = once_value_2;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    fra.me.REG[3] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
-    fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
-    fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[3])(fra.me.REG[3]);
-    fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    if (!once_value_3) {
-      fra.me.REG[3] = BOX_NativeString("_");
-      REGB2 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
-      once_value_3 = fra.me.REG[3];
-      register_static_object(&once_value_3);
-    } else fra.me.REG[3] = once_value_3;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    fra.me.REG[3] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
-    fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
-    fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[3])(fra.me.REG[3]);
-    fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    if (!once_value_4) {
-      fra.me.REG[3] = BOX_NativeString("_");
-      REGB2 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
-      once_value_4 = fra.me.REG[3];
-      register_static_object(&once_value_4);
-    } else fra.me.REG[3] = once_value_4;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    fra.me.REG[3] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
-    fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
-    fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    if (!once_value_5) {
-      fra.me.REG[3] = BOX_NativeString("_");
-      REGB2 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
-      once_value_5 = fra.me.REG[3];
-      register_static_object(&once_value_5);
-    } else fra.me.REG[3] = once_value_5;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    fra.me.REG[3] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
-    fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
-    REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1182);
-    }
-    REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
-    fra.me.REG[3] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    if (!once_value_6) {
-      fra.me.REG[3] = BOX_NativeString("");
-      REGB2 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
-      once_value_6 = fra.me.REG[3];
-      register_static_object(&once_value_6);
-    } else fra.me.REG[3] = once_value_6;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
+    /* syntax/mmbuilder.nit:1216 */
+    fra.me.REG[0] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[0] = CALL_primitive_info___MMMethod___default_extern_name(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[1] = fra.me.REG[0];
   }
-  /* ./syntax//mmbuilder.nit:1184 */
+  /* syntax/mmbuilder.nit:1218 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
   CALL_syntax___syntax_base___MMMethSrcMethod___extern_name__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
@@ -8869,20 +9304,21 @@ val_t syntax___mmbuilder___ATypePropdef___prop(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1189;
+  fra.me.line = 1223;
   fra.me.meth = LOCATE_syntax___mmbuilder___ATypePropdef___prop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1189 */
+  /* syntax/mmbuilder.nit:1223 */
   fra.me.REG[1] = fra.me.REG[0];
   fra.me.REG[1] = ATTR_syntax___mmbuilder___ATypePropdef____prop(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1189);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1223);
   }
   goto label1;
   label1: while(0);
@@ -8894,30 +9330,31 @@ void syntax___mmbuilder___ATypePropdef___accept_property_builder(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1192;
+  fra.me.line = 1226;
   fra.me.meth = LOCATE_syntax___mmbuilder___ATypePropdef___accept_property_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1192 */
+  /* syntax/mmbuilder.nit:1226 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1194 */
+  /* syntax/mmbuilder.nit:1228 */
   CALL_SUPER_syntax___mmbuilder___ATypePropdef___accept_property_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1195 */
+  /* syntax/mmbuilder.nit:1229 */
   fra.me.REG[1] = CALL_parser___parser_nodes___ATypePropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[1] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1196 */
+  /* syntax/mmbuilder.nit:1230 */
   fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[0] = NEW_MMSrcTypeProperty_syntax___syntax_base___MMSrcTypeProperty___init(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1197 */
+  /* syntax/mmbuilder.nit:1231 */
   ATTR_syntax___mmbuilder___ATypePropdef____prop(fra.me.REG[2]) = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:1198 */
+  /* syntax/mmbuilder.nit:1232 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   CALL_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -8931,10 +9368,11 @@ void syntax___mmbuilder___ATypePropdef___accept_property_verifier(val_t p0, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1201;
+  fra.me.line = 1235;
   fra.me.meth = LOCATE_syntax___mmbuilder___ATypePropdef___accept_property_verifier;
   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;
@@ -8942,25 +9380,25 @@ void syntax___mmbuilder___ATypePropdef___accept_property_verifier(val_t p0, val_
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1201 */
+  /* syntax/mmbuilder.nit:1235 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1203 */
+  /* syntax/mmbuilder.nit:1237 */
   CALL_SUPER_syntax___mmbuilder___ATypePropdef___accept_property_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1204 */
+  /* syntax/mmbuilder.nit:1238 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   fra.me.REG[0] = CALL_parser___parser_nodes___ATypePropdef___n_type(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[0] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
   fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[4] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[4])(fra.me.REG[4]);
   fra.me.REG[4] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:1205 */
+  /* syntax/mmbuilder.nit:1239 */
   fra.me.REG[0] = CALL_syntax___syntax_base___ATypePropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
   CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:1206 */
+  /* syntax/mmbuilder.nit:1240 */
   fra.me.REG[4] = CALL_parser___parser_nodes___ATypePropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:1207 */
+  /* syntax/mmbuilder.nit:1241 */
   fra.me.REG[4] = CALL_syntax___syntax_base___ATypePropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[0] = CALL_parser___parser_nodes___ATypePropdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
@@ -8985,25 +9423,26 @@ void syntax___mmbuilder___ATypePropdef___accept_abs_syntax_visitor(val_t p0, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1210;
+  fra.me.line = 1244;
   fra.me.meth = LOCATE_syntax___mmbuilder___ATypePropdef___accept_abs_syntax_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1210 */
+  /* syntax/mmbuilder.nit:1244 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1212 */
+  /* syntax/mmbuilder.nit:1246 */
   fra.me.REG[2] = ATTR_syntax___mmbuilder___ATypePropdef____prop(fra.me.REG[2]);
   CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1213 */
+  /* syntax/mmbuilder.nit:1247 */
   CALL_SUPER_syntax___mmbuilder___ATypePropdef___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1214 */
+  /* syntax/mmbuilder.nit:1248 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property__eq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
   stack_frame_head = fra.me.prev;
   return;
@@ -9014,17 +9453,18 @@ val_t syntax___mmbuilder___MethidAccumulator___name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1221;
+  fra.me.line = 1255;
   fra.me.meth = LOCATE_syntax___mmbuilder___MethidAccumulator___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1221 */
+  /* syntax/mmbuilder.nit:1255 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___MethidAccumulator____name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_name", LOCATE_syntax___mmbuilder, 1221);
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_syntax___mmbuilder, 1255);
   }
   fra.me.REG[0] = ATTR_syntax___mmbuilder___MethidAccumulator____name(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -9036,37 +9476,38 @@ void syntax___mmbuilder___MethidAccumulator___visit(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1222;
+  fra.me.line = 1256;
   fra.me.meth = LOCATE_syntax___mmbuilder___MethidAccumulator___visit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1224 */
+  /* syntax/mmbuilder.nit:1258 */
   REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___Token, ID_parser___parser_nodes___Token)) /*cast Token*/;
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1225 */
+    /* syntax/mmbuilder.nit:1259 */
     REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___MethidAccumulator____name(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_name", LOCATE_syntax___mmbuilder, 1225);
+      nit_abort("Uninitialized attribute %s", "_name", LOCATE_syntax___mmbuilder, 1259);
     }
     fra.me.REG[2] = ATTR_syntax___mmbuilder___MethidAccumulator____name(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1225);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1259);
     }
-    fra.me.REG[3] = CALL_parser___lexer___Token___text(fra.me.REG[1])(fra.me.REG[1]);
+    fra.me.REG[3] = CALL_parser___parser_nodes___Token___text(fra.me.REG[1])(fra.me.REG[1]);
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   } else {
-    /* ./syntax//mmbuilder.nit:1227 */
+    /* syntax/mmbuilder.nit:1261 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1227);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1261);
     }
     CALL_parser___parser_prod___ANode___visit_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
@@ -9078,13 +9519,14 @@ val_t syntax___mmbuilder___AMethid___name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1233;
+  fra.me.line = 1267;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMethid___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1233 */
+  /* syntax/mmbuilder.nit:1267 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___AMethid____name(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -9094,28 +9536,29 @@ void syntax___mmbuilder___AMethid___accept_property_builder(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1235;
+  fra.me.line = 1269;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMethid___accept_property_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1235 */
+  /* syntax/mmbuilder.nit:1269 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:1237 */
+  /* syntax/mmbuilder.nit:1271 */
   fra.me.REG[3] = NEW_MethidAccumulator_parser___parser_prod___Visitor___init();
-  /* ./syntax//mmbuilder.nit:1238 */
+  /* syntax/mmbuilder.nit:1272 */
   CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1239 */
+  /* syntax/mmbuilder.nit:1273 */
   fra.me.REG[3] = CALL_syntax___mmbuilder___MethidAccumulator___name(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
   ATTR_syntax___mmbuilder___AMethid____name(fra.me.REG[2]) = fra.me.REG[3];
-  /* ./syntax//mmbuilder.nit:1240 */
+  /* syntax/mmbuilder.nit:1274 */
   CALL_SUPER_syntax___mmbuilder___AMethid___accept_property_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -9129,10 +9572,11 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
         static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1245;
+  fra.me.line = 1279;
   fra.me.meth = LOCATE_syntax___mmbuilder___ASignature___accept_property_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -9143,25 +9587,25 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1245 */
+  /* syntax/mmbuilder.nit:1279 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1247 */
+  /* syntax/mmbuilder.nit:1281 */
   CALL_SUPER_syntax___mmbuilder___ASignature___accept_property_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1248 */
+  /* syntax/mmbuilder.nit:1282 */
   fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = CALL_syntax___mmbuilder___SignatureBuilder___has_error_occured(fra.me.REG[1])(fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1249 */
+    /* syntax/mmbuilder.nit:1283 */
     goto label1;
   } else {
-    /* ./syntax//mmbuilder.nit:1250 */
+    /* syntax/mmbuilder.nit:1284 */
     fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
     fra.me.REG[1] = CALL_syntax___mmbuilder___SignatureBuilder___untyped_params(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:1251 */
+      /* syntax/mmbuilder.nit:1285 */
       fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
       fra.me.REG[1] = CALL_syntax___mmbuilder___SignatureBuilder___untyped_params(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[1] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[1])(fra.me.REG[1]);
@@ -9201,7 +9645,7 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:1252 */
+        /* syntax/mmbuilder.nit:1286 */
         fra.me.REG[4] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
         fra.me.REG[4] = CALL_syntax___mmbuilder___SignatureBuilder___untyped_params(fra.me.REG[4])(fra.me.REG[4]);
         fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
@@ -9214,11 +9658,11 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
         } else fra.me.REG[1] = once_value_2;
         fra.me.REG[1] = fra.me.REG[1];
         CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4], fra.me.REG[1]);
-        /* ./syntax//mmbuilder.nit:1253 */
+        /* syntax/mmbuilder.nit:1287 */
         goto label1;
       }
     } else {
-      /* ./syntax//mmbuilder.nit:1255 */
+      /* syntax/mmbuilder.nit:1289 */
       fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
       fra.me.REG[1] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
@@ -9243,29 +9687,29 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:1256 */
+        /* syntax/mmbuilder.nit:1290 */
         fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-        /* ./syntax//mmbuilder.nit:1257 */
+        /* syntax/mmbuilder.nit:1291 */
         fra.me.REG[4] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
         fra.me.REG[4] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[4])(fra.me.REG[4]);
-        /* ./../lib/standard//collection//array.nit:232 */
+        /* ../lib/standard/collection/array.nit:269 */
         REGB0 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:233 */
+        /* ../lib/standard/collection/array.nit:270 */
         REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-        /* ./../lib/standard//collection//array.nit:234 */
+        /* ../lib/standard/collection/array.nit:271 */
         fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-        /* ./../lib/standard//collection//array.nit:235 */
+        /* ../lib/standard/collection/array.nit:272 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ../lib/standard/collection/array.nit:24 */
           REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
           REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
           REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -9273,43 +9717,43 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ./../lib/standard//kernel.nit:215 */
+          /* ../lib/standard/kernel.nit:232 */
           REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-          /* ./../lib/standard//collection//array.nit:235 */
+          /* ../lib/standard/collection/array.nit:272 */
           if (UNTAG_Bool(REGB1)) {
-            /* ./../lib/standard//collection//array.nit:236 */
+            /* ../lib/standard/collection/array.nit:273 */
             REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:652 */
+            /* ../lib/standard/collection/array.nit:718 */
             fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
-            /* ./syntax//mmbuilder.nit:1258 */
+            /* syntax/mmbuilder.nit:1292 */
             fra.me.REG[7] = CALL_syntax___mmbuilder___AParam___stype(fra.me.REG[6])(fra.me.REG[6]);
             REGB1 = TAG_Bool(fra.me.REG[7]!=NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
             } else {
-              nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1258);
+              nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1292);
             }
             fra.me.REG[6] = CALL_parser___parser_nodes___AParam___n_id(fra.me.REG[6])(fra.me.REG[6]);
             fra.me.REG[6] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
             fra.me.REG[6] = NEW_MMParam_metamodel___static_type___MMParam___init(fra.me.REG[7], fra.me.REG[6]);
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB1 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ../lib/standard/kernel.nit:235 */
             REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB0 = REGB1;
           } else {
-            /* ./../lib/standard//collection//array.nit:235 */
+            /* ../lib/standard/collection/array.nit:272 */
             goto label3;
           }
         }
         label3: while(0);
-        /* ./syntax//mmbuilder.nit:1260 */
+        /* syntax/mmbuilder.nit:1294 */
         fra.me.REG[0] = NIT_NULL;
-        /* ./syntax//mmbuilder.nit:1261 */
+        /* syntax/mmbuilder.nit:1295 */
         fra.me.REG[5] = CALL_parser___parser_nodes___ASignature___n_type(fra.me.REG[2])(fra.me.REG[2]);
         REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
@@ -9325,15 +9769,15 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
         }
         REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
         if (UNTAG_Bool(REGB0)) {
-          /* ./syntax//mmbuilder.nit:1262 */
+          /* syntax/mmbuilder.nit:1296 */
           fra.me.REG[2] = CALL_parser___parser_nodes___ASignature___n_type(fra.me.REG[2])(fra.me.REG[2]);
           REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
-            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1262);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1296);
           }
           fra.me.REG[2] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
           fra.me.REG[0] = fra.me.REG[2];
-          /* ./syntax//mmbuilder.nit:1263 */
+          /* syntax/mmbuilder.nit:1297 */
           REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
           } else {
@@ -9347,21 +9791,21 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
             }
           }
           if (UNTAG_Bool(REGB0)) {
-            /* ./syntax//mmbuilder.nit:1264 */
+            /* syntax/mmbuilder.nit:1298 */
             fra.me.REG[2] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
             REGB0 = TAG_Bool(true);
             CALL_syntax___mmbuilder___SignatureBuilder___has_error_occured__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
-            /* ./syntax//mmbuilder.nit:1265 */
+            /* syntax/mmbuilder.nit:1299 */
             goto label1;
           }
         }
-        /* ./syntax//mmbuilder.nit:1268 */
+        /* syntax/mmbuilder.nit:1302 */
         fra.me.REG[2] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
         fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
         fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[5])(fra.me.REG[5]);
         fra.me.REG[5] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
         CALL_syntax___mmbuilder___SignatureBuilder___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-        /* ./syntax//mmbuilder.nit:1269 */
+        /* syntax/mmbuilder.nit:1303 */
         fra.me.REG[5] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
         REGB0 = CALL_syntax___mmbuilder___SignatureBuilder___vararg_rank(fra.me.REG[5])(fra.me.REG[5]);
         REGB1 = TAG_Int(0);
@@ -9370,42 +9814,42 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ./../lib/standard//kernel.nit:216 */
+        /* ../lib/standard/kernel.nit:233 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-        /* ./syntax//mmbuilder.nit:1269 */
+        /* syntax/mmbuilder.nit:1303 */
         if (UNTAG_Bool(REGB1)) {
-          /* ./syntax//mmbuilder.nit:1270 */
+          /* syntax/mmbuilder.nit:1304 */
           fra.me.REG[5] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
           fra.me.REG[5] = CALL_syntax___mmbuilder___SignatureBuilder___signature(fra.me.REG[5])(fra.me.REG[5]);
           fra.me.REG[2] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
           REGB1 = CALL_syntax___mmbuilder___SignatureBuilder___vararg_rank(fra.me.REG[2])(fra.me.REG[2]);
           REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
-            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1270);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1304);
           }
           CALL_metamodel___vararg___MMSignature___vararg_rank__eq(fra.me.REG[5])(fra.me.REG[5], REGB1);
         }
-        /* ./syntax//mmbuilder.nit:1272 */
+        /* syntax/mmbuilder.nit:1306 */
         fra.me.REG[5] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
         fra.me.REG[5] = CALL_syntax___mmbuilder___SignatureBuilder___closure_decls(fra.me.REG[5])(fra.me.REG[5]);
-        /* ./../lib/standard//collection//array.nit:232 */
+        /* ../lib/standard/collection/array.nit:269 */
         REGB1 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:233 */
+        /* ../lib/standard/collection/array.nit:270 */
         REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
         REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-        /* ./../lib/standard//collection//array.nit:234 */
+        /* ../lib/standard/collection/array.nit:271 */
         fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
-        /* ./../lib/standard//collection//array.nit:235 */
+        /* ../lib/standard/collection/array.nit:272 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ../lib/standard/collection/array.nit:24 */
           REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
           REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
           REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -9413,36 +9857,36 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ./../lib/standard//kernel.nit:215 */
+          /* ../lib/standard/kernel.nit:232 */
           REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-          /* ./../lib/standard//collection//array.nit:235 */
+          /* ../lib/standard/collection/array.nit:272 */
           if (UNTAG_Bool(REGB0)) {
-            /* ./../lib/standard//collection//array.nit:236 */
+            /* ../lib/standard/collection/array.nit:273 */
             REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
             if (UNTAG_Bool(REGB0)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:652 */
+            /* ../lib/standard/collection/array.nit:718 */
             fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-            /* ./syntax//mmbuilder.nit:1273 */
+            /* syntax/mmbuilder.nit:1307 */
             fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
             fra.me.REG[1] = CALL_syntax___mmbuilder___SignatureBuilder___signature(fra.me.REG[1])(fra.me.REG[1]);
             REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
             if (UNTAG_Bool(REGB0)) {
-              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1273);
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1307);
             }
             fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[1])(fra.me.REG[1]);
             fra.me.REG[0] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[0])(fra.me.REG[0]);
             fra.me.REG[0] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[0])(fra.me.REG[0]);
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB0 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ../lib/standard/kernel.nit:235 */
             REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB1 = REGB0;
           } else {
-            /* ./../lib/standard//collection//array.nit:235 */
+            /* ../lib/standard/collection/array.nit:272 */
             goto label4;
           }
         }
@@ -9462,10 +9906,11 @@ void syntax___mmbuilder___ASignature___check_visibility(val_t p0, val_t p1, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1278;
+  fra.me.line = 1312;
   fra.me.meth = LOCATE_syntax___mmbuilder___ASignature___check_visibility;
   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;
@@ -9473,7 +9918,7 @@ void syntax___mmbuilder___ASignature___check_visibility(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:1281 */
+  /* syntax/mmbuilder.nit:1315 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___visibility_level(fra.me.REG[3])(fra.me.REG[3]);
   REGB1 = TAG_Int(3);
@@ -9482,16 +9927,16 @@ void syntax___mmbuilder___ASignature___check_visibility(val_t p0, val_t p1, val_
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ./../lib/standard//kernel.nit:216 */
+  /* ../lib/standard/kernel.nit:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./syntax//mmbuilder.nit:1281 */
+  /* syntax/mmbuilder.nit:1315 */
   if (UNTAG_Bool(REGB1)) {
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:1282 */
+  /* syntax/mmbuilder.nit:1316 */
   fra.me.REG[3] = CALL_parser___parser_nodes___ASignature___n_params(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___ASignature___check_visibility_2));
-  /* ./syntax//mmbuilder.nit:1285 */
+  /* syntax/mmbuilder.nit:1319 */
   fra.me.REG[3] = CALL_parser___parser_nodes___ASignature___n_type(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
@@ -9510,7 +9955,7 @@ void syntax___mmbuilder___ASignature___check_visibility(val_t p0, val_t p1, val_
     fra.me.REG[0] = CALL_parser___parser_nodes___ASignature___n_type(fra.me.REG[0])(fra.me.REG[0]);
     REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1285);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1319);
     }
     CALL_syntax___mmbuilder___AType___check_visibility(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
   }
@@ -9530,13 +9975,14 @@ void syntax___mmbuilder___ASignature___check_visibility(val_t p0, val_t p1, val_
     fra.me.meth = LOCATE_syntax___mmbuilder___ASignature___check_visibility;
     fra.me.has_broke = 0;
     fra.me.REG_size = 2;
+    fra.me.nitni_local_ref_head = NULL;
     fra.me.REG[0] = NIT_NULL;
     fra.me.REG[1] = NIT_NULL;
     fra.me.closure_ctx = closctx_param;
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./syntax//mmbuilder.nit:1283 */
+    /* syntax/mmbuilder.nit:1317 */
     fra.me.REG[1] = CALL_parser___parser_nodes___AParam___n_type(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -9555,7 +10001,7 @@ void syntax___mmbuilder___ASignature___check_visibility(val_t p0, val_t p1, val_
       fra.me.REG[0] = CALL_parser___parser_nodes___AParam___n_type(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1283);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1317);
       }
       CALL_syntax___mmbuilder___AType___check_visibility(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1], closctx->REG[2]);
     }
@@ -9568,17 +10014,18 @@ val_t syntax___mmbuilder___AParam___position(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1290;
+  fra.me.line = 1324;
   fra.me.meth = LOCATE_syntax___mmbuilder___AParam___position;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1290 */
+  /* syntax/mmbuilder.nit:1324 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___AParam____position(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_position", LOCATE_syntax___mmbuilder, 1290);
+    nit_abort("Uninitialized attribute %s", "_position", LOCATE_syntax___mmbuilder, 1324);
   }
   REGB0 = ATTR_syntax___mmbuilder___AParam____position(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -9590,20 +10037,21 @@ val_t syntax___mmbuilder___AParam___variable(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1292;
+  fra.me.line = 1326;
   fra.me.meth = LOCATE_syntax___mmbuilder___AParam___variable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1292 */
+  /* syntax/mmbuilder.nit:1326 */
   fra.me.REG[1] = fra.me.REG[0];
   fra.me.REG[1] = ATTR_syntax___mmbuilder___AParam____variable(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1292);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1326);
   }
   goto label1;
   label1: while(0);
@@ -9615,13 +10063,14 @@ val_t syntax___mmbuilder___AParam___stype(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1295;
+  fra.me.line = 1329;
   fra.me.meth = LOCATE_syntax___mmbuilder___AParam___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;
-  /* ./syntax//mmbuilder.nit:1295 */
+  /* syntax/mmbuilder.nit:1329 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___AParam____stype(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -9631,15 +10080,16 @@ void syntax___mmbuilder___AParam___stype__eq(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1295;
+  fra.me.line = 1329;
   fra.me.meth = LOCATE_syntax___mmbuilder___AParam___stype__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1295 */
+  /* syntax/mmbuilder.nit:1329 */
   ATTR_syntax___mmbuilder___AParam____stype(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -9654,10 +10104,11 @@ void syntax___mmbuilder___AParam___accept_property_verifier(val_t p0, val_t p1){
             static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1298;
+  fra.me.line = 1332;
   fra.me.meth = LOCATE_syntax___mmbuilder___AParam___accept_property_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -9667,38 +10118,38 @@ void syntax___mmbuilder___AParam___accept_property_verifier(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1298 */
+  /* syntax/mmbuilder.nit:1332 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1300 */
+  /* syntax/mmbuilder.nit:1334 */
   CALL_SUPER_syntax___mmbuilder___AParam___accept_property_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1301 */
+  /* syntax/mmbuilder.nit:1335 */
   fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[1] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ../lib/standard/collection/array.nit:24 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1301 */
+  /* syntax/mmbuilder.nit:1335 */
   ATTR_syntax___mmbuilder___AParam____position(fra.me.REG[2]) = REGB0;
-  /* ./syntax//mmbuilder.nit:1302 */
+  /* syntax/mmbuilder.nit:1336 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AParam___n_id(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[1] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[0] = CALL_parser___parser_nodes___AParam___n_id(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[0] = NEW_ParamVariable_syntax___syntax_base___ParamVariable___init(fra.me.REG[1], fra.me.REG[0]);
   ATTR_syntax___mmbuilder___AParam____variable(fra.me.REG[2]) = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:1303 */
+  /* syntax/mmbuilder.nit:1337 */
   fra.me.REG[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[0] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1304 */
+  /* syntax/mmbuilder.nit:1338 */
   fra.me.REG[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[0] = CALL_syntax___mmbuilder___SignatureBuilder___untyped_params(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1305 */
+  /* syntax/mmbuilder.nit:1339 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AParam___n_type(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -9714,14 +10165,14 @@ void syntax___mmbuilder___AParam___accept_property_verifier(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1306 */
+    /* syntax/mmbuilder.nit:1340 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AParam___n_type(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1306);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1340);
     }
     fra.me.REG[0] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    /* ./syntax//mmbuilder.nit:1307 */
+    /* syntax/mmbuilder.nit:1341 */
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -9735,34 +10186,34 @@ void syntax___mmbuilder___AParam___accept_property_verifier(val_t p0, val_t p1){
       }
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:1308 */
+      /* syntax/mmbuilder.nit:1342 */
       fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
       REGB0 = TAG_Bool(true);
       CALL_syntax___mmbuilder___SignatureBuilder___has_error_occured__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
-      /* ./syntax//mmbuilder.nit:1309 */
+      /* syntax/mmbuilder.nit:1343 */
       goto label1;
     }
-    /* ./syntax//mmbuilder.nit:1311 */
+    /* syntax/mmbuilder.nit:1345 */
     fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
     fra.me.REG[1] = CALL_syntax___mmbuilder___SignatureBuilder___untyped_params(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./../lib/standard//collection//array.nit:232 */
+    /* ../lib/standard/collection/array.nit:269 */
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:233 */
+    /* ../lib/standard/collection/array.nit:270 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-    /* ./../lib/standard//collection//array.nit:234 */
+    /* ../lib/standard/collection/array.nit:271 */
     fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
       REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -9770,44 +10221,44 @@ void syntax___mmbuilder___AParam___accept_property_verifier(val_t p0, val_t p1){
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ./../lib/standard//kernel.nit:215 */
+      /* ../lib/standard/kernel.nit:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:236 */
+        /* ../lib/standard/collection/array.nit:273 */
         REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:652 */
+        /* ../lib/standard/collection/array.nit:718 */
         fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-        /* ./syntax//mmbuilder.nit:1312 */
+        /* syntax/mmbuilder.nit:1346 */
         CALL_syntax___mmbuilder___AParam___stype__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
-        /* ./syntax//mmbuilder.nit:1313 */
+        /* syntax/mmbuilder.nit:1347 */
         REGB1 = CALL_syntax___mmbuilder___AParam___is_vararg(fra.me.REG[2])(fra.me.REG[2]);
         if (UNTAG_Bool(REGB1)) {
-          /* ./syntax//mmbuilder.nit:1314 */
+          /* syntax/mmbuilder.nit:1348 */
           fra.me.REG[6] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
           REGB1 = CALL_syntax___mmbuilder___SignatureBuilder___vararg_rank(fra.me.REG[6])(fra.me.REG[6]);
           REGB2 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:219 */
+          /* ../lib/standard/kernel.nit:236 */
           REGB2 = TAG_Int(-UNTAG_Int(REGB2));
-          /* ./syntax//mmbuilder.nit:1314 */
+          /* syntax/mmbuilder.nit:1348 */
           REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
           if (UNTAG_Bool(REGB3)) {
           } else {
-            /* ./../lib/standard//kernel.nit:210 */
+            /* ../lib/standard/kernel.nit:227 */
             REGB2 = TAG_Bool((REGB1)==(REGB2));
-            /* ./syntax//mmbuilder.nit:1314 */
+            /* syntax/mmbuilder.nit:1348 */
             REGB3 = REGB2;
           }
           if (UNTAG_Bool(REGB3)) {
-            /* ./syntax//mmbuilder.nit:1315 */
+            /* syntax/mmbuilder.nit:1349 */
             fra.me.REG[6] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
             REGB3 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[5])(fra.me.REG[5]);
             CALL_syntax___mmbuilder___SignatureBuilder___vararg_rank__eq(fra.me.REG[6])(fra.me.REG[6], REGB3);
           } else {
-            /* ./syntax//mmbuilder.nit:1317 */
+            /* syntax/mmbuilder.nit:1351 */
             if (!once_value_2) {
               fra.me.REG[6] = BOX_NativeString("Error: A vararg parameter is already defined.");
               REGB3 = TAG_Int(45);
@@ -9818,26 +10269,26 @@ void syntax___mmbuilder___AParam___accept_property_verifier(val_t p0, val_t p1){
             fra.me.REG[6] = fra.me.REG[6];
             CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[6]);
           }
-          /* ./syntax//mmbuilder.nit:1319 */
+          /* syntax/mmbuilder.nit:1353 */
           fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
           fra.me.REG[0] = fra.me.REG[6];
         }
-        /* ./syntax//mmbuilder.nit:1321 */
+        /* syntax/mmbuilder.nit:1355 */
         fra.me.REG[5] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[5])(fra.me.REG[5]);
         CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB3 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ../lib/standard/kernel.nit:235 */
         REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB0 = REGB3;
       } else {
-        /* ./../lib/standard//collection//array.nit:235 */
+        /* ../lib/standard/collection/array.nit:272 */
         goto label3;
       }
     }
     label3: while(0);
-    /* ./syntax//mmbuilder.nit:1323 */
+    /* syntax/mmbuilder.nit:1357 */
     fra.me.REG[3] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
     fra.me.REG[3] = CALL_syntax___mmbuilder___SignatureBuilder___untyped_params(fra.me.REG[3])(fra.me.REG[3]);
     CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[3])(fra.me.REG[3]);
@@ -9853,13 +10304,14 @@ val_t syntax___mmbuilder___AParam___is_vararg(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1327;
+  fra.me.line = 1361;
   fra.me.meth = LOCATE_syntax___mmbuilder___AParam___is_vararg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1327 */
+  /* syntax/mmbuilder.nit:1361 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AParam___n_dotdotdot(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -9885,17 +10337,18 @@ val_t syntax___mmbuilder___AClosureDecl___position(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1331;
+  fra.me.line = 1365;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClosureDecl___position;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1331 */
+  /* syntax/mmbuilder.nit:1365 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___AClosureDecl____position(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_position", LOCATE_syntax___mmbuilder, 1331);
+    nit_abort("Uninitialized attribute %s", "_position", LOCATE_syntax___mmbuilder, 1365);
   }
   REGB0 = ATTR_syntax___mmbuilder___AClosureDecl____position(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -9907,20 +10360,21 @@ val_t syntax___mmbuilder___AClosureDecl___variable(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1333;
+  fra.me.line = 1367;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClosureDecl___variable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1333 */
+  /* syntax/mmbuilder.nit:1367 */
   fra.me.REG[1] = fra.me.REG[0];
   fra.me.REG[1] = ATTR_syntax___mmbuilder___AClosureDecl____variable(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1333);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1367);
   }
   goto label1;
   label1: while(0);
@@ -9941,10 +10395,11 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
         static val_t once_value_7; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1336;
+  fra.me.line = 1370;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClosureDecl___accept_property_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
+  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;
@@ -9958,27 +10413,27 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
   fra.me.REG[10] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1336 */
+  /* syntax/mmbuilder.nit:1370 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1338 */
+  /* syntax/mmbuilder.nit:1372 */
   fra.me.REG[4] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:1339 */
+  /* syntax/mmbuilder.nit:1373 */
   fra.me.REG[5] = NEW_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init();
   CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-  /* ./syntax//mmbuilder.nit:1340 */
+  /* syntax/mmbuilder.nit:1374 */
   CALL_SUPER_syntax___mmbuilder___AClosureDecl___accept_property_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1341 */
+  /* syntax/mmbuilder.nit:1375 */
   fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = CALL_syntax___mmbuilder___SignatureBuilder___has_error_occured(fra.me.REG[1])(fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1342 */
+    /* syntax/mmbuilder.nit:1376 */
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:1344 */
+  /* syntax/mmbuilder.nit:1378 */
   fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[1] = CALL_syntax___mmbuilder___SignatureBuilder___signature(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1345 */
+  /* syntax/mmbuilder.nit:1379 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -9992,17 +10447,17 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1346 */
+    /* syntax/mmbuilder.nit:1380 */
     fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
     fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
     fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[5])(fra.me.REG[5]);
     fra.me.REG[5] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[0], NIT_NULL, fra.me.REG[5]);
     fra.me.REG[1] = fra.me.REG[5];
   }
-  /* ./syntax//mmbuilder.nit:1348 */
+  /* syntax/mmbuilder.nit:1382 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1348);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1382);
   }
   fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
@@ -10038,7 +10493,7 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1349 */
+    /* syntax/mmbuilder.nit:1383 */
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString("Syntax Error: A break block cannot have a return value.");
       REGB0 = TAG_Int(55);
@@ -10049,12 +10504,12 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
     fra.me.REG[5] = fra.me.REG[5];
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[5]);
   }
-  /* ./syntax//mmbuilder.nit:1353 */
+  /* syntax/mmbuilder.nit:1387 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
   fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[0] = CALL_metamodel___inheritance___MMModule___type_any(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[5], NIT_NULL, fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:1354 */
+  /* syntax/mmbuilder.nit:1388 */
   if (!once_value_3) {
     if (!once_value_4) {
       fra.me.REG[5] = BOX_NativeString("break");
@@ -10072,17 +10527,17 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
   REGB0 = TAG_Bool(false);
   REGB1 = TAG_Bool(true);
   fra.me.REG[0] = NEW_MMClosure_metamodel___static_type___MMClosure___init(fra.me.REG[5], fra.me.REG[0], REGB0, REGB1);
-  /* ./syntax//mmbuilder.nit:1355 */
+  /* syntax/mmbuilder.nit:1389 */
   REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1355);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1389);
   }
   fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[1])(fra.me.REG[1]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:1357 */
+  /* syntax/mmbuilder.nit:1391 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AClosureDecl___n_id(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:1358 */
+  /* syntax/mmbuilder.nit:1392 */
   fra.me.REG[5] = CALL_parser___parser_nodes___AClosureDecl___n_kwbreak(fra.me.REG[2])(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
@@ -10112,26 +10567,26 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   fra.me.REG[1] = NEW_MMClosure_metamodel___static_type___MMClosure___init(fra.me.REG[0], fra.me.REG[1], REGB1, REGB0);
-  /* ./syntax//mmbuilder.nit:1359 */
+  /* syntax/mmbuilder.nit:1393 */
   fra.me.REG[5] = CALL_syntax___mmbuilder___SignatureBuilder___closure_decls(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:232 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:233 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -10139,18 +10594,18 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:1360 */
+      /* syntax/mmbuilder.nit:1394 */
       fra.me.REG[8] = CALL_parser___parser_nodes___AClosureDecl___n_id(fra.me.REG[7])(fra.me.REG[7]);
       fra.me.REG[8] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[8])(fra.me.REG[8]);
       REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[8],fra.me.REG[0]));
@@ -10160,7 +10615,7 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:1361 */
+        /* syntax/mmbuilder.nit:1395 */
         fra.me.REG[8] = CALL_parser___parser_nodes___AClosureDecl___n_id(fra.me.REG[2])(fra.me.REG[2]);
         REGB1 = TAG_Int(5);
         fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
@@ -10201,38 +10656,38 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
         fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
         CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8], fra.me.REG[9]);
-        /* ./syntax//mmbuilder.nit:1362 */
+        /* syntax/mmbuilder.nit:1396 */
         goto label1;
       }
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label8;
     }
   }
   label8: while(0);
-  /* ./syntax//mmbuilder.nit:1365 */
+  /* syntax/mmbuilder.nit:1399 */
   CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:1366 */
+  /* syntax/mmbuilder.nit:1400 */
   fra.me.REG[3] = CALL_syntax___mmbuilder___SignatureBuilder___closure_decls(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ../lib/standard/collection/array.nit:24 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:1366 */
+  /* syntax/mmbuilder.nit:1400 */
   ATTR_syntax___mmbuilder___AClosureDecl____position(fra.me.REG[2]) = REGB0;
-  /* ./syntax//mmbuilder.nit:1367 */
+  /* syntax/mmbuilder.nit:1401 */
   fra.me.REG[4] = CALL_syntax___mmbuilder___SignatureBuilder___closure_decls(fra.me.REG[4])(fra.me.REG[4]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1368 */
+  /* syntax/mmbuilder.nit:1402 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AClosureDecl___n_id(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
   fra.me.REG[3] = CALL_parser___parser_nodes___AClosureDecl___n_id(fra.me.REG[2])(fra.me.REG[2]);
@@ -10253,10 +10708,11 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
     static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1373;
+  fra.me.line = 1407;
   fra.me.meth = LOCATE_syntax___mmbuilder___AType___check_visibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -10266,7 +10722,7 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:1376 */
+  /* syntax/mmbuilder.nit:1410 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___visibility_level(fra.me.REG[3])(fra.me.REG[3]);
   REGB1 = TAG_Int(3);
@@ -10275,15 +10731,15 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ./../lib/standard//kernel.nit:216 */
+  /* ../lib/standard/kernel.nit:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./syntax//mmbuilder.nit:1376 */
+  /* syntax/mmbuilder.nit:1410 */
   if (UNTAG_Bool(REGB1)) {
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:1377 */
+  /* syntax/mmbuilder.nit:1411 */
   fra.me.REG[3] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1378 */
+  /* syntax/mmbuilder.nit:1412 */
   REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
@@ -10299,13 +10755,13 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
   if (UNTAG_Bool(REGB1)) {
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:1379 */
+  /* syntax/mmbuilder.nit:1413 */
   REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1379);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1413);
   }
   fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:1380 */
+  /* syntax/mmbuilder.nit:1414 */
   fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
   REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___visibility_level(fra.me.REG[4])(fra.me.REG[4]);
   REGB0 = TAG_Int(3);
@@ -10314,11 +10770,11 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ./../lib/standard//kernel.nit:216 */
+  /* ../lib/standard/kernel.nit:233 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-  /* ./syntax//mmbuilder.nit:1380 */
+  /* syntax/mmbuilder.nit:1414 */
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1381 */
+    /* syntax/mmbuilder.nit:1415 */
     REGB0 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_2) {
@@ -10355,7 +10811,7 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
   }
-  /* ./syntax//mmbuilder.nit:1383 */
+  /* syntax/mmbuilder.nit:1417 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AType___n_types(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___AType___check_visibility_5));
   label1: while(0);
@@ -10372,12 +10828,13 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
     fra.me.meth = LOCATE_syntax___mmbuilder___AType___check_visibility;
     fra.me.has_broke = 0;
     fra.me.REG_size = 1;
+    fra.me.nitni_local_ref_head = NULL;
     fra.me.REG[0] = NIT_NULL;
     fra.me.closure_ctx = closctx_param;
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./syntax//mmbuilder.nit:1384 */
+    /* syntax/mmbuilder.nit:1418 */
     CALL_syntax___mmbuilder___AType___check_visibility(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1], closctx->REG[2]);
     stack_frame_head = fra.me.prev;
     return;
@@ -10387,10 +10844,11 @@ void syntax___mmbuilder___AExpr___accept_class_builder(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1390;
+  fra.me.line = 1424;
   fra.me.meth = LOCATE_syntax___mmbuilder___AExpr___accept_class_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
@@ -10403,10 +10861,11 @@ void syntax___mmbuilder___AExpr___accept_property_builder(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1391;
+  fra.me.line = 1425;
   fra.me.meth = LOCATE_syntax___mmbuilder___AExpr___accept_property_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
@@ -10419,10 +10878,11 @@ void syntax___mmbuilder___AExpr___accept_property_verifier(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1392;
+  fra.me.line = 1426;
   fra.me.meth = LOCATE_syntax___mmbuilder___AExpr___accept_property_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
@@ -10430,3 +10890,151 @@ void syntax___mmbuilder___AExpr___accept_property_verifier(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return;
 }
+val_t syntax___mmbuilder___AExpr___get_easy_stype(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax___mmbuilder;
+  fra.me.line = 1428;
+  fra.me.meth = LOCATE_syntax___mmbuilder___AExpr___get_easy_stype;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* syntax/mmbuilder.nit:1428 */
+  fra.me.REG[1] = NIT_NULL;
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t syntax___mmbuilder___ABoolExpr___get_easy_stype(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax___mmbuilder;
+  fra.me.line = 1432;
+  fra.me.meth = LOCATE_syntax___mmbuilder___ABoolExpr___get_easy_stype;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* syntax/mmbuilder.nit:1432 */
+  fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_bool(fra.me.REG[1])(fra.me.REG[1]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t syntax___mmbuilder___AStringExpr___get_easy_stype(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax___mmbuilder;
+  fra.me.line = 1436;
+  fra.me.meth = LOCATE_syntax___mmbuilder___AStringExpr___get_easy_stype;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* syntax/mmbuilder.nit:1436 */
+  fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_string(fra.me.REG[1])(fra.me.REG[1]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t syntax___mmbuilder___ACharExpr___get_easy_stype(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax___mmbuilder;
+  fra.me.line = 1440;
+  fra.me.meth = LOCATE_syntax___mmbuilder___ACharExpr___get_easy_stype;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* syntax/mmbuilder.nit:1440 */
+  fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_char(fra.me.REG[1])(fra.me.REG[1]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t syntax___mmbuilder___AIntExpr___get_easy_stype(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax___mmbuilder;
+  fra.me.line = 1444;
+  fra.me.meth = LOCATE_syntax___mmbuilder___AIntExpr___get_easy_stype;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* syntax/mmbuilder.nit:1444 */
+  fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_int(fra.me.REG[1])(fra.me.REG[1]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t syntax___mmbuilder___AFloatExpr___get_easy_stype(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax___mmbuilder;
+  fra.me.line = 1448;
+  fra.me.meth = LOCATE_syntax___mmbuilder___AFloatExpr___get_easy_stype;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* syntax/mmbuilder.nit:1448 */
+  fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_float(fra.me.REG[1])(fra.me.REG[1]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t syntax___mmbuilder___ANewExpr___get_easy_stype(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax___mmbuilder;
+  fra.me.line = 1452;
+  fra.me.meth = LOCATE_syntax___mmbuilder___ANewExpr___get_easy_stype;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* syntax/mmbuilder.nit:1452 */
+  fra.me.REG[0] = CALL_parser___parser_nodes___ANewExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[1] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}