nitg: inline Object::== and Object::!=
[nit.git] / c_src / syntax___mmbuilder._sep.c
index 0ce57aa..2e07bbf 100644 (file)
@@ -1,5 +1,182 @@
 /* This C file is generated by NIT to compile module syntax___mmbuilder. */
 #include "syntax___mmbuilder._sep.h"
+void syntax___mmbuilder___ToolContext___handle_property_conflict(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  static val_t once_value_2; /* Once value */
+  static val_t once_value_3; /* Once value */
+  static val_t once_value_4; /* Once value */
+  static val_t once_value_5; /* Once value */
+  static val_t once_value_6; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax___mmbuilder;
+  fra.me.line = 26;
+  fra.me.meth = LOCATE_syntax___mmbuilder___ToolContext___handle_property_conflict;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* syntax/mmbuilder.nit:28 */
+  fra.me.REG[3] = NIT_NULL;
+  /* syntax/mmbuilder.nit:29 */
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcLocalClass, ID_syntax___syntax_base___MMSrcLocalClass)) /*cast MMSrcLocalClass*/;
+  if (UNTAG_Bool(REGB0)) {
+    /* syntax/mmbuilder.nit:30 */
+    fra.me.REG[4] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[1])(fra.me.REG[1]);
+    /* syntax/mmbuilder.nit:31 */
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 31);
+      }
+      CALL_parser___parser_nodes___ANode___location(fra.me.REG[4])(fra.me.REG[4]);
+    }
+  }
+  /* syntax/mmbuilder.nit:34 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* ../lib/standard/collection/array.nit:266 */
+  fra.me.REG[5] = fra.me.REG[2];
+  /* ../lib/standard/collection/array.nit:269 */
+  REGB0 = TAG_Int(0);
+  /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+  }
+  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
+  /* ../lib/standard/collection/array.nit:271 */
+  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+  /* ../lib/standard/collection/array.nit:272 */
+  while(1) {
+    /* ../lib/standard/collection/array.nit:24 */
+    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+    }
+    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:232 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ../lib/standard/collection/array.nit:272 */
+    if (UNTAG_Bool(REGB1)) {
+      /* ../lib/standard/collection/array.nit:273 */
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+      }
+      /* ../lib/standard/collection/array.nit:718 */
+      fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
+      /* syntax/mmbuilder.nit:36 */
+      fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[7])(fra.me.REG[7]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
+      /* ../lib/standard/collection/array.nit:274 */
+      REGB1 = TAG_Int(1);
+      /* ../lib/standard/kernel.nit:235 */
+      REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
+      /* ../lib/standard/collection/array.nit:274 */
+      REGB0 = REGB1;
+    } else {
+      /* ../lib/standard/collection/array.nit:272 */
+      goto label1;
+    }
+  }
+  label1: while(0);
+  /* syntax/mmbuilder.nit:38 */
+  REGB0 = TAG_Int(7);
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_2) {
+    fra.me.REG[5] = BOX_NativeString("Property inheritance conflict in class ");
+    REGB0 = TAG_Int(39);
+    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    once_value_2 = fra.me.REG[5];
+    register_static_object(&once_value_2);
+  } else fra.me.REG[5] = once_value_2;
+  fra.me.REG[5] = fra.me.REG[5];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+  fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
+  if (!once_value_3) {
+    fra.me.REG[1] = BOX_NativeString(" for `");
+    REGB0 = TAG_Int(6);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_3 = fra.me.REG[1];
+    register_static_object(&once_value_3);
+  } else fra.me.REG[1] = once_value_3;
+  fra.me.REG[1] = fra.me.REG[1];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
+  fra.me.REG[2] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 38);
+  }
+  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+  if (!once_value_4) {
+    fra.me.REG[2] = BOX_NativeString("': conflicting properties are defined in ");
+    REGB0 = TAG_Int(41);
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_4 = fra.me.REG[2];
+    register_static_object(&once_value_4);
+  } else fra.me.REG[2] = once_value_4;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+  if (!once_value_5) {
+    fra.me.REG[2] = BOX_NativeString(", ");
+    REGB0 = TAG_Int(2);
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_5 = fra.me.REG[2];
+    register_static_object(&once_value_5);
+  } else fra.me.REG[2] = once_value_5;
+  fra.me.REG[2] = fra.me.REG[2];
+  fra.me.REG[2] = CALL_standard___string___Collection___join(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+  if (!once_value_6) {
+    fra.me.REG[2] = BOX_NativeString("");
+    REGB0 = TAG_Int(0);
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_6 = fra.me.REG[2];
+    register_static_object(&once_value_6);
+  } else fra.me.REG[2] = once_value_6;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+  fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+  CALL_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;
+}
 val_t syntax___mmbuilder___CSHSorter___compare(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -7,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 = 27;
+  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:29 */
+  /* syntax/mmbuilder.nit:47 */
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = CALL_metamodel___partial_order___PartialOrderElement___rank(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[2])(fra.me.REG[2]);
@@ -35,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 = 32;
+  fra.me.line = 50;
   fra.me.meth = LOCATE_syntax___mmbuilder___CSHSorter___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:32 */
-  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;
@@ -56,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 = 36;
+  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;
@@ -70,195 +248,210 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:41 */
+  /* syntax/mmbuilder.nit:59 */
   CALL_metamodel___inheritance___MMModule___import_global_classes(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:44 */
+  /* syntax/mmbuilder.nit:62 */
   fra.me.REG[2] = NEW_ClassBuilderVisitor_syntax___mmbuilder___ClassBuilderVisitor___init(fra.me.REG[1], fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:45 */
+  /* syntax/mmbuilder.nit:63 */
   fra.me.REG[3] = CALL_syntax___syntax_base___MMSrcModule___node(fra.me.REG[0])(fra.me.REG[0]);
   CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:46 */
-  CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:48 */
+  /* 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, 48);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 66);
   }
   fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:49 */
+    /* syntax/mmbuilder.nit:67 */
     CALL_syntax___mmbuilder___MMSrcModule___process_default_classes(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   }
-  /* ./syntax//mmbuilder.nit:53 */
+  /* syntax/mmbuilder.nit:71 */
   CALL_metamodel___inheritance___MMModule___import_local_classes(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:56 */
+  /* syntax/mmbuilder.nit:74 */
   fra.me.REG[3] = NEW_ClassSpecializationBuilderVisitor_syntax___mmbuilder___ClassSpecializationBuilderVisitor___init(fra.me.REG[1], fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:57 */
+  /* syntax/mmbuilder.nit:75 */
   fra.me.REG[2] = CALL_syntax___syntax_base___MMSrcModule___node(fra.me.REG[0])(fra.me.REG[0]);
   CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:58 */
-  CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:61 */
+  /* 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:67 */
-  CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:72 */
+  /* 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:75 */
+  /* syntax/mmbuilder.nit:93 */
   if (!once_value_3) {
     fra.me.REG[3] = NEW_CSHSorter_syntax___mmbuilder___CSHSorter___init();
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
   fra.me.REG[3] = fra.me.REG[3];
-  /* ./syntax//mmbuilder.nit:76 */
+  /* syntax/mmbuilder.nit:94 */
   CALL_standard___collection___sorter___AbstractSorter___sort(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:79 */
+  /* syntax/mmbuilder.nit:97 */
   fra.me.REG[3] = NEW_ClassAncestorBuilder_syntax___mmbuilder___ClassAncestorBuilder___init(fra.me.REG[1], fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:231 */
+  /* ../lib/standard/collection/array.nit:266 */
   fra.me.REG[4] = fra.me.REG[2];
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:81 */
+      /* syntax/mmbuilder.nit:99 */
       CALL_syntax___mmbuilder___MMLocalClass___accept_class_visitor(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
-      /* ./syntax//mmbuilder.nit:82 */
-      CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-      /* ./syntax//mmbuilder.nit:83 */
+      /* 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:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label4;
     }
   }
   label4: while(0);
-  /* ./syntax//mmbuilder.nit:87 */
+  /* syntax/mmbuilder.nit:105 */
   fra.me.REG[3] = NEW_ClassVerifierVisitor_syntax___mmbuilder___ClassVerifierVisitor___init(fra.me.REG[1], fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:231 */
+  /* ../lib/standard/collection/array.nit:266 */
   fra.me.REG[5] = fra.me.REG[2];
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:89 */
+      /* syntax/mmbuilder.nit:107 */
       CALL_syntax___mmbuilder___MMLocalClass___accept_class_visitor(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label5;
     }
   }
   label5: while(0);
-  /* ./syntax//mmbuilder.nit:91 */
-  CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:94 */
+  /* 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:231 */
+  /* ../lib/standard/collection/array.nit:266 */
   fra.me.REG[4] = fra.me.REG[2];
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:97 */
+      /* syntax/mmbuilder.nit:115 */
       CALL_syntax___mmbuilder___MMLocalClass___accept_class_visitor(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
-      /* ./syntax//mmbuilder.nit:100 */
+      /* syntax/mmbuilder.nit:118 */
       REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_syntax___syntax_base___MMSrcLocalClass, ID_syntax___syntax_base___MMSrcLocalClass)) /*cast MMSrcLocalClass*/;
       if (UNTAG_Bool(REGB1)) {
         fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
@@ -298,72 +491,77 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:101 */
+        /* syntax/mmbuilder.nit:119 */
         CALL_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label6;
     }
   }
   label6: while(0);
-  /* ./syntax//mmbuilder.nit:106 */
-  CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:109 */
+  /* 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:234 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:111 */
+      /* syntax/mmbuilder.nit:129 */
       CALL_syntax___mmbuilder___MMLocalClass___accept_properties_visitor(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label7;
     }
   }
   label7: while(0);
-  /* ./syntax//mmbuilder.nit:114 */
-  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;
 }
@@ -371,6 +569,7 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
     struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
     val_t REGB0;
     val_t REGB1;
+    val_t REGB2;
     fun_t CREG[1];
     val_t tmp;
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
@@ -379,27 +578,33 @@ 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:62 */
+    /* syntax/mmbuilder.nit:80 */
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = CALL_metamodel___abstractmetamodel___MMModule___visibility_for(closctx->REG[0])(closctx->REG[0], fra.me.REG[1]);
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
     REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___visibility_level(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./syntax//mmbuilder.nit:62 */
+    /* syntax/mmbuilder.nit:80 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./syntax//mmbuilder.nit:63 */
+      /* syntax/mmbuilder.nit:81 */
       goto label2;
     }
-    /* ./syntax//mmbuilder.nit:65 */
+    /* syntax/mmbuilder.nit:83 */
     CALL_metamodel___inheritance___MMLocalClass___compute_super_classes(fra.me.REG[0])(fra.me.REG[0]);
     label2: while(0);
     stack_frame_head = fra.me.prev;
@@ -415,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 = 117;
+  fra.me.line = 135;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcModule___process_default_classes;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  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:120 */
+  /* syntax/mmbuilder.nit:138 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Object");
@@ -440,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:121 */
+  /* syntax/mmbuilder.nit:139 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:122 */
+    /* syntax/mmbuilder.nit:140 */
     REGB0 = TAG_Int(0);
     fra.me.REG[2] = NEW_MMSrcLocalClass_syntax___syntax_base___MMSrcLocalClass___init(fra.me.REG[0], fra.me.REG[1], NIT_NULL, REGB0);
-    /* ./syntax//mmbuilder.nit:123 */
+    /* syntax/mmbuilder.nit:141 */
     CALL_metamodel___abstractmetamodel___MMLocalClass___new_global(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:124 */
+    /* syntax/mmbuilder.nit:142 */
     fra.me.REG[3] = CALL_syntax___syntax_base___MMSrcModule___src_local_classes(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2]);
   }
-  /* ./syntax//mmbuilder.nit:126 */
+  /* syntax/mmbuilder.nit:144 */
   if (!once_value_3) {
     if (!once_value_4) {
       fra.me.REG[2] = BOX_NativeString("Bool");
@@ -469,16 +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:127 */
+  /* syntax/mmbuilder.nit:145 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:128 */
+    /* syntax/mmbuilder.nit:146 */
     REGB0 = TAG_Int(0);
     fra.me.REG[2] = NEW_MMSrcLocalClass_syntax___syntax_base___MMSrcLocalClass___init(fra.me.REG[0], fra.me.REG[1], NIT_NULL, REGB0);
-    /* ./syntax//mmbuilder.nit:129 */
+    /* syntax/mmbuilder.nit:147 */
     CALL_metamodel___abstractmetamodel___MMLocalClass___new_global(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:130 */
+    /* syntax/mmbuilder.nit:148 */
     fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcModule___src_local_classes(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
   }
@@ -490,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 = 136;
+  fra.me.line = 154;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMLocalClass___accept_class_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
@@ -506,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 = 141;
+  fra.me.line = 159;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMLocalClass___accept_properties_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
@@ -524,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 = 148;
+  fra.me.line = 166;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___accept_class_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  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:150 */
+  /* syntax/mmbuilder.nit:168 */
   fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:151 */
+  /* syntax/mmbuilder.nit:169 */
   while(1) {
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -551,17 +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:152 */
+      /* syntax/mmbuilder.nit:170 */
       CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-      /* ./syntax//mmbuilder.nit:153 */
+      /* syntax/mmbuilder.nit:171 */
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 153);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 171);
       }
       fra.me.REG[2] = CALL_syntax___syntax_base___AClassdef___next_node(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[0] = fra.me.REG[2];
     } else {
-      /* ./syntax//mmbuilder.nit:151 */
+      /* syntax/mmbuilder.nit:169 */
       goto label1;
     }
   }
@@ -576,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 = 157;
+  fra.me.line = 175;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  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:160 */
+  /* syntax/mmbuilder.nit:178 */
   fra.me.REG[2] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:161 */
+  /* syntax/mmbuilder.nit:179 */
   while(1) {
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -604,23 +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:162 */
+      /* syntax/mmbuilder.nit:180 */
       CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-      /* ./syntax//mmbuilder.nit:163 */
+      /* syntax/mmbuilder.nit:181 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 163);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 181);
       }
       fra.me.REG[3] = CALL_syntax___syntax_base___AClassdef___next_node(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[2] = fra.me.REG[3];
     } else {
-      /* ./syntax//mmbuilder.nit:161 */
+      /* syntax/mmbuilder.nit:179 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./syntax//mmbuilder.nit:166 */
+  /* syntax/mmbuilder.nit:184 */
   fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcLocalClass___src_local_properties(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor_2));
   stack_frame_head = fra.me.prev;
   return;
@@ -635,18 +846,19 @@ 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:167 */
+    /* syntax/mmbuilder.nit:185 */
     CALL_syntax___mmbuilder___MMLocalProperty___accept_property_visitor(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
     stack_frame_head = fra.me.prev;
     return;
   }
 void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
@@ -661,10 +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 = 171;
+  fra.me.line = 189;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 10;
+  fra.me.REG_size = 11;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -675,59 +888,67 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:175 */
-  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_1));
+  /* syntax/mmbuilder.nit:189 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* syntax/mmbuilder.nit:193 */
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_1));
   switch ((&(fra.me))->has_broke) {
     case 0: break;
     case 1: (&(fra.me))->has_broke = 0; goto label3;
   }
-  /* ./syntax//mmbuilder.nit:183 */
-  fra.me.REG[2] = NEW_ArraySet_standard___collection___array___ArraySet___init();
-  /* ./syntax//mmbuilder.nit:184 */
+  /* syntax/mmbuilder.nit:201 */
   fra.me.REG[3] = NEW_ArraySet_standard___collection___array___ArraySet___init();
-  /* ./syntax//mmbuilder.nit:185 */
-  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* syntax/mmbuilder.nit:202 */
+  fra.me.REG[4] = NEW_ArraySet_standard___collection___array___ArraySet___init();
+  /* syntax/mmbuilder.nit:203 */
+  fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[5])(fra.me.REG[5]);
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+  /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:236 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
+  /* ../lib/standard/collection/array.nit:271 */
+  fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+    /* ../lib/standard/collection/array.nit:24 */
+    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
-      REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+      /* ../lib/standard/collection/array.nit:273 */
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:186 */
-      fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
-      REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[7])(fra.me.REG[7]);
+      /* ../lib/standard/collection/array.nit:718 */
+      fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
+      /* syntax/mmbuilder.nit:204 */
+      fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[7])(fra.me.REG[7]);
+      REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[8])(fra.me.REG[8]);
       if (UNTAG_Bool(REGB1)) {
-        fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
-        REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[7])(fra.me.REG[7]);
+        fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[7])(fra.me.REG[7]);
+        REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[8])(fra.me.REG[8]);
         REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
       } else {
         REGB2 = TAG_Bool(false);
@@ -736,195 +957,201 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(true);
       } else {
-        fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
-        REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[7])(fra.me.REG[7]);
+        fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[7])(fra.me.REG[7]);
+        REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[8])(fra.me.REG[8]);
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
         goto label4;
       }
-      /* ./syntax//mmbuilder.nit:187 */
-      fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[6])(fra.me.REG[6]);
-      CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[7])(fra.me.REG[7], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_5));
-      /* ./syntax//mmbuilder.nit:191 */
+      /* syntax/mmbuilder.nit:205 */
+      fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[7])(fra.me.REG[7]);
+      CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[8])(fra.me.REG[8], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_5));
+      /* syntax/mmbuilder.nit:209 */
       if (!once_value_7) {
         if (!once_value_8) {
-          fra.me.REG[7] = BOX_NativeString("init");
+          fra.me.REG[8] = BOX_NativeString("init");
           REGB1 = TAG_Int(4);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
-          once_value_8 = fra.me.REG[7];
+          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+          once_value_8 = fra.me.REG[8];
           register_static_object(&once_value_8);
-        } else fra.me.REG[7] = once_value_8;
-        fra.me.REG[7] = fra.me.REG[7];
-        fra.me.REG[7] = CALL_standard___symbol___String___to_symbol(fra.me.REG[7])(fra.me.REG[7]);
-        once_value_7 = fra.me.REG[7];
+        } else fra.me.REG[8] = once_value_8;
+        fra.me.REG[8] = fra.me.REG[8];
+        fra.me.REG[8] = CALL_standard___symbol___String___to_symbol(fra.me.REG[8])(fra.me.REG[8]);
+        once_value_7 = fra.me.REG[8];
         register_static_object(&once_value_7);
-      } else fra.me.REG[7] = once_value_7;
-      fra.me.REG[7] = fra.me.REG[7];
-      /* ./syntax//mmbuilder.nit:192 */
-      REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+      } else fra.me.REG[8] = once_value_7;
+      fra.me.REG[8] = fra.me.REG[8];
+      /* syntax/mmbuilder.nit:210 */
+      REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:193 */
-        fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
-        /* ./syntax//mmbuilder.nit:194 */
-        fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
+        /* syntax/mmbuilder.nit:211 */
+        fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+        /* syntax/mmbuilder.nit:212 */
+        fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8]);
       }
       label4: while(0);
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label9;
     }
   }
   label9: while(0);
-  /* ./syntax//mmbuilder.nit:199 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* ./syntax//mmbuilder.nit:200 */
-  fra.me.REG[4] = CALL_syntax___syntax_base___MMSrcLocalClass___src_local_properties(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_10));
-  /* ./syntax//mmbuilder.nit:207 */
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
+  /* syntax/mmbuilder.nit:217 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* syntax/mmbuilder.nit:218 */
+  fra.me.REG[5] = CALL_syntax___syntax_base___MMSrcLocalClass___src_local_properties(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[5] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[5])(fra.me.REG[5]);
+  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[5])(fra.me.REG[5], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_10));
+  /* syntax/mmbuilder.nit:225 */
+  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:210 */
-    fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-    CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_11));
-    /* ./syntax//mmbuilder.nit:218 */
-    fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[7] = CALL_metamodel___partial_order___PartialOrderElement___order(fra.me.REG[7])(fra.me.REG[7]);
-    fra.me.REG[7] = CALL_metamodel___partial_order___PartialOrder___select_smallests(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
-    fra.me.REG[4] = fra.me.REG[7];
-    /* ./syntax//mmbuilder.nit:221 */
-    fra.me.REG[7] = NIT_NULL;
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+    /* syntax/mmbuilder.nit:228 */
+    fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+    CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_11));
+    /* syntax/mmbuilder.nit:236 */
+    fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[8] = CALL_metamodel___partial_order___PartialOrderElement___order(fra.me.REG[8])(fra.me.REG[8]);
+    fra.me.REG[8] = CALL_metamodel___partial_order___PartialOrder___select_smallests(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
+    fra.me.REG[5] = fra.me.REG[8];
+    /* syntax/mmbuilder.nit:239 */
+    fra.me.REG[8] = NIT_NULL;
+    /* ../lib/standard/collection/array.nit:24 */
+    REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
-    REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./syntax//mmbuilder.nit:223 */
+    REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
+    /* syntax/mmbuilder.nit:241 */
     REGB1 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:217 */
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:234 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-    /* ./syntax//mmbuilder.nit:223 */
+    /* syntax/mmbuilder.nit:241 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./syntax//mmbuilder.nit:224 */
-      fra.me.REG[6] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[0])(fra.me.REG[0]);
+      /* syntax/mmbuilder.nit:242 */
+      fra.me.REG[7] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[2])(fra.me.REG[2]);
       REGB1 = TAG_Int(7);
-      fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+      fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
       if (!once_value_13) {
-        fra.me.REG[9] = BOX_NativeString("Error: Explicit constructor required in ");
+        fra.me.REG[10] = BOX_NativeString("Error: Explicit constructor required in ");
         REGB1 = TAG_Int(40);
-        fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
-        once_value_13 = fra.me.REG[9];
+        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        once_value_13 = fra.me.REG[10];
         register_static_object(&once_value_13);
-      } else fra.me.REG[9] = once_value_13;
-      fra.me.REG[9] = fra.me.REG[9];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
-      fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+      } else fra.me.REG[10] = once_value_13;
+      fra.me.REG[10] = fra.me.REG[10];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
+      fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
       if (!once_value_14) {
-        fra.me.REG[9] = BOX_NativeString(" since multiple inheritance of constructor is forbiden. Conflicting classes are ");
+        fra.me.REG[10] = BOX_NativeString(" since multiple inheritance of constructor is forbiden. Conflicting classes are ");
         REGB1 = TAG_Int(80);
-        fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
-        once_value_14 = fra.me.REG[9];
+        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        once_value_14 = fra.me.REG[10];
         register_static_object(&once_value_14);
-      } else fra.me.REG[9] = once_value_14;
-      fra.me.REG[9] = fra.me.REG[9];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+      } else fra.me.REG[10] = once_value_14;
+      fra.me.REG[10] = fra.me.REG[10];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
       if (!once_value_15) {
-        fra.me.REG[9] = BOX_NativeString(", ");
+        fra.me.REG[10] = BOX_NativeString(", ");
         REGB1 = TAG_Int(2);
-        fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
-        once_value_15 = fra.me.REG[9];
+        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        once_value_15 = fra.me.REG[10];
         register_static_object(&once_value_15);
-      } else fra.me.REG[9] = once_value_15;
-      fra.me.REG[9] = fra.me.REG[9];
-      fra.me.REG[9] = CALL_standard___string___Collection___join(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[9]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+      } else fra.me.REG[10] = once_value_15;
+      fra.me.REG[10] = fra.me.REG[10];
+      fra.me.REG[10] = CALL_standard___string___Collection___join(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[10]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
       if (!once_value_16) {
-        fra.me.REG[9] = BOX_NativeString(". Costructors are ");
+        fra.me.REG[10] = BOX_NativeString(". Costructors are ");
         REGB1 = TAG_Int(18);
-        fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
-        once_value_16 = fra.me.REG[9];
+        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        once_value_16 = fra.me.REG[10];
         register_static_object(&once_value_16);
-      } else fra.me.REG[9] = once_value_16;
-      fra.me.REG[9] = fra.me.REG[9];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+      } else fra.me.REG[10] = once_value_16;
+      fra.me.REG[10] = fra.me.REG[10];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
       if (!once_value_17) {
-        fra.me.REG[9] = BOX_NativeString(", ");
+        fra.me.REG[10] = BOX_NativeString(", ");
         REGB1 = TAG_Int(2);
-        fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
-        once_value_17 = fra.me.REG[9];
+        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        once_value_17 = fra.me.REG[10];
         register_static_object(&once_value_17);
-      } else fra.me.REG[9] = once_value_17;
-      fra.me.REG[9] = fra.me.REG[9];
-      fra.me.REG[9] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[9]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+      } else fra.me.REG[10] = once_value_17;
+      fra.me.REG[10] = fra.me.REG[10];
+      fra.me.REG[10] = CALL_standard___string___Collection___join(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[10]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
       if (!once_value_18) {
-        fra.me.REG[9] = BOX_NativeString(".");
+        fra.me.REG[10] = BOX_NativeString(".");
         REGB1 = TAG_Int(1);
-        fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
-        once_value_18 = fra.me.REG[9];
+        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        once_value_18 = fra.me.REG[10];
         register_static_object(&once_value_18);
-      } else fra.me.REG[9] = once_value_18;
-      fra.me.REG[9] = fra.me.REG[9];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
-      fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
-      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6], fra.me.REG[8]);
-      /* ./syntax//mmbuilder.nit:225 */
+      } else fra.me.REG[10] = once_value_18;
+      fra.me.REG[10] = fra.me.REG[10];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
+      fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
+      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7], fra.me.REG[9]);
+      /* syntax/mmbuilder.nit:243 */
       goto label3;
     } else {
-      /* ./../lib/standard//collection//array.nit:23 */
-      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+      /* ../lib/standard/collection/array.nit:24 */
+      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
-      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-      /* ./syntax//mmbuilder.nit:226 */
+      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
+      /* syntax/mmbuilder.nit:244 */
       REGB0 = TAG_Int(1);
       REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB0));
       if (UNTAG_Bool(REGB2)) {
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ../lib/standard/kernel.nit:227 */
         REGB0 = TAG_Bool((REGB1)==(REGB0));
-        /* ./syntax//mmbuilder.nit:226 */
+        /* syntax/mmbuilder.nit:244 */
         REGB2 = REGB0;
       }
       if (UNTAG_Bool(REGB2)) {
-        /* ./syntax//mmbuilder.nit:227 */
-        fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
-        fra.me.REG[7] = fra.me.REG[4];
+        /* syntax/mmbuilder.nit:245 */
+        fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
+        fra.me.REG[8] = fra.me.REG[5];
       }
     }
-    CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_19));
-    /* ./syntax//mmbuilder.nit:236 */
-    fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
-    REGB2 = TAG_Bool(fra.me.REG[7]!=NIT_NULL);
+    CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_19));
+    /* syntax/mmbuilder.nit:254 */
+    fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[2])(fra.me.REG[2]);
+    REGB2 = TAG_Bool(fra.me.REG[8]!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 236);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 254);
     }
-    REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 236);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 254);
     }
-    fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[7])(fra.me.REG[7]);
-    CALL_metamodel___abstractmetamodel___MMGlobalClass___mixin_of__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+    fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[8])(fra.me.REG[8]);
+    CALL_metamodel___abstractmetamodel___MMGlobalClass___mixin_of__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
   } else {
-    /* ./syntax//mmbuilder.nit:241 */
-    fra.me.REG[2] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[2])(fra.me.REG[2]);
-    fra.me.REG[2] = NEW_MMImplicitInit_syntax___syntax_base___MMImplicitInit___init(fra.me.REG[0], fra.me.REG[5], fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:242 */
-    CALL_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
+    /* syntax/mmbuilder.nit:259 */
+    fra.me.REG[3] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
+    fra.me.REG[3] = NEW_MMImplicitInit_syntax___syntax_base___MMImplicitInit___init(fra.me.REG[2], fra.me.REG[6], fra.me.REG[3]);
+    /* syntax/mmbuilder.nit:260 */
+    CALL_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[3]);
   }
   label3: while(0);
   stack_frame_head = fra.me.prev;
@@ -942,21 +1169,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 = 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:176 */
+    /* syntax/mmbuilder.nit:194 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:178 */
+      /* syntax/mmbuilder.nit:196 */
       fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-      REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],closctx->REG[0]));
+      REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],closctx->REG[2]));
       if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[2]);
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
@@ -978,16 +1206,17 @@ 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:188 */
+        /* syntax/mmbuilder.nit:206 */
         REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
         REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
         if (UNTAG_Bool(REGB0)) {
           goto label6;
         }
-        /* ./syntax//mmbuilder.nit:189 */
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[3])(closctx->REG[3], fra.me.REG[0]);
+        /* syntax/mmbuilder.nit:207 */
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], fra.me.REG[0]);
         label6: while(0);
         stack_frame_head = fra.me.prev;
         return;
@@ -1004,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:201 */
+    /* syntax/mmbuilder.nit:219 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_syntax___syntax_base___MMSrcAttribute, ID_syntax___syntax_base___MMSrcAttribute)) /*cast MMSrcAttribute*/;
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:202 */
+      /* syntax/mmbuilder.nit:220 */
       fra.me.REG[1] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
-      /* ./syntax//mmbuilder.nit:203 */
+      /* syntax/mmbuilder.nit:221 */
       REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 203);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 221);
       }
       fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
@@ -1034,7 +1264,7 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
         }
       }
       if (UNTAG_Bool(REGB0)) {
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[5])(closctx->REG[5], fra.me.REG[0]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[6])(closctx->REG[6], fra.me.REG[0]);
       }
     }
     stack_frame_head = fra.me.prev;
@@ -1045,33 +1275,34 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       val_t REGB0;
       fun_t CREG[1];
       val_t tmp;
-      /* ./syntax//mmbuilder.nit:211 */
+      /* syntax/mmbuilder.nit:229 */
       fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
       fra.me.file = LOCATE_syntax___mmbuilder;
       fra.me.line = 0;
       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:212 */
+      /* syntax/mmbuilder.nit:230 */
       fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-      /* ./syntax//mmbuilder.nit:213 */
-      REGB0 = CALL_standard___collection___abstract_collection___Collection___has(closctx->REG[4])(closctx->REG[4], fra.me.REG[0]);
+      /* syntax/mmbuilder.nit:231 */
+      REGB0 = CALL_standard___collection___abstract_collection___Collection___has(closctx->REG[5])(closctx->REG[5], fra.me.REG[0]);
       if (UNTAG_Bool(REGB0)) {
         goto label12;
       }
-      /* ./syntax//mmbuilder.nit:214 */
+      /* syntax/mmbuilder.nit:232 */
       fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:215 */
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], fra.me.REG[0]);
+        /* syntax/mmbuilder.nit:233 */
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[5])(closctx->REG[5], fra.me.REG[0]);
       }
       label12: while(0);
       stack_frame_head = fra.me.prev;
@@ -1084,29 +1315,30 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       val_t REGB2;
       fun_t CREG[1];
       val_t tmp;
-      /* ./syntax//mmbuilder.nit:230 */
+      /* syntax/mmbuilder.nit:248 */
       fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
       fra.me.file = LOCATE_syntax___mmbuilder;
       fra.me.line = 0;
       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:232 */
-      REGB0 = TAG_Bool(closctx->REG[7]==NIT_NULL);
+      /* syntax/mmbuilder.nit:250 */
+      REGB0 = TAG_Bool(closctx->REG[8]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB1 = TAG_Bool(closctx->REG[7]==NIT_NULL);
+        REGB1 = TAG_Bool(closctx->REG[8]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
           REGB1 = TAG_Bool(false);
           REGB0 = REGB1;
         } else {
-          REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[7])(closctx->REG[7], NIT_NULL);
+          REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[8])(closctx->REG[8], NIT_NULL);
           REGB0 = REGB1;
         }
       }
@@ -1114,17 +1346,17 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
         REGB0 = TAG_Bool(true);
       } else {
         fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-        REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],closctx->REG[7]));
+        REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],closctx->REG[8]));
         if (UNTAG_Bool(REGB1)) {
         } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], closctx->REG[7]);
+          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], closctx->REG[8]);
           REGB1 = REGB2;
         }
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:233 */
-        CALL_metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
+        /* syntax/mmbuilder.nit:251 */
+        CALL_metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
       }
       stack_frame_head = fra.me.prev;
       return;
@@ -1138,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 = 247;
+  fra.me.line = 265;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
+  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;
@@ -1152,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:251 */
+  /* syntax/mmbuilder.nit:269 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:253 */
+  /* syntax/mmbuilder.nit:271 */
   fra.me.REG[4] = CALL_syntax___syntax_base___MMSrcLocalClass___src_local_properties(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:254 */
+    /* syntax/mmbuilder.nit:272 */
     fra.me.REG[4] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Int(5);
     fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -1196,27 +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:255 */
+    /* syntax/mmbuilder.nit:273 */
     goto label4;
   }
-  /* ./syntax//mmbuilder.nit:257 */
+  /* syntax/mmbuilder.nit:275 */
   fra.me.REG[5] = CALL_syntax___syntax_base___MMSrcLocalClass___src_local_properties(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:260 */
+  /* syntax/mmbuilder.nit:278 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:261 */
+    /* syntax/mmbuilder.nit:279 */
     fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    /* ./syntax//mmbuilder.nit:262 */
+    /* syntax/mmbuilder.nit:280 */
     CALL_metamodel___inheritance___MMLocalProperty___inherit_global(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   }
-  /* ./syntax//mmbuilder.nit:265 */
+  /* syntax/mmbuilder.nit:283 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMLocalProperty___is_global_set(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:266 */
+    /* syntax/mmbuilder.nit:284 */
     CALL_metamodel___abstractmetamodel___MMLocalProperty___new_global(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:267 */
+    /* syntax/mmbuilder.nit:285 */
     fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
     CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
@@ -1230,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 = 273;
+  fra.me.line = 291;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMLocalProperty___accept_property_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
@@ -1246,19 +1480,20 @@ val_t syntax___mmbuilder___MMImplicitInit___super_init(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 279;
+  fra.me.line = 297;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMImplicitInit___super_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:279 */
+  /* syntax/mmbuilder.nit:297 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___MMImplicitInit____super_init(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
 void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
@@ -1269,14 +1504,13 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
           static val_t once_value_2; /* Once value */
           static val_t once_value_3; /* Once value */
           static val_t once_value_4; /* Once value */
-      static val_t once_value_9; /* Once value */
-        static val_t once_value_10; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 280;
+  fra.me.line = 298;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMImplicitInit___accept_property_visitor;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 8;
+  fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -1285,330 +1519,399 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:282 */
-  fra.me.REG[2] = NIT_NULL;
-  /* ./syntax//mmbuilder.nit:283 */
-  fra.me.REG[3] = CALL_syntax___syntax_base___MMImplicitInit___super_inits(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* syntax/mmbuilder.nit:298 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* syntax/mmbuilder.nit:300 */
+  fra.me.REG[3] = NIT_NULL;
+  /* syntax/mmbuilder.nit:301 */
+  fra.me.REG[4] = CALL_syntax___syntax_base___MMImplicitInit___super_inits(fra.me.REG[2])(fra.me.REG[2]);
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+  /* ../lib/standard/collection/array.nit:270 */
+  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:236 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+  /* ../lib/standard/collection/array.nit:271 */
+  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+    /* ../lib/standard/collection/array.nit:24 */
+    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
-      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      /* ../lib/standard/collection/array.nit:273 */
+      REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:284 */
-      fra.me.REG[6] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[5])(fra.me.REG[5]);
-      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+      /* ../lib/standard/collection/array.nit:718 */
+      fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
+      /* syntax/mmbuilder.nit:302 */
+      fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[6])(fra.me.REG[6]);
+      REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 284);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 302);
       }
-      REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[6])(fra.me.REG[6]);
+      REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[7])(fra.me.REG[7]);
       REGB2 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:217 */
+      REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+      }
+      /* ../lib/standard/kernel.nit:234 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
-      /* ./syntax//mmbuilder.nit:284 */
+      /* syntax/mmbuilder.nit:302 */
       if (UNTAG_Bool(REGB2)) {
-        /* ./syntax//mmbuilder.nit:285 */
-        REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        /* syntax/mmbuilder.nit:303 */
+        REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
             REGB1 = TAG_Bool(false);
             REGB2 = REGB1;
           } else {
-            REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+            REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
             REGB2 = REGB1;
           }
         }
         if (UNTAG_Bool(REGB2)) {
-          /* ./syntax//mmbuilder.nit:286 */
-          fra.me.REG[2] = fra.me.REG[5];
+          /* syntax/mmbuilder.nit:304 */
+          fra.me.REG[3] = fra.me.REG[6];
         } else {
-          /* ./syntax//mmbuilder.nit:288 */
+          /* syntax/mmbuilder.nit:306 */
           REGB2 = TAG_Int(7);
-          fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+          fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
           if (!once_value_1) {
-            fra.me.REG[7] = BOX_NativeString("Error: explicit constructor needed in ");
+            fra.me.REG[8] = BOX_NativeString("Error: explicit constructor needed in ");
             REGB2 = TAG_Int(38);
-            fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-            once_value_1 = fra.me.REG[7];
+            fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+            once_value_1 = fra.me.REG[8];
             register_static_object(&once_value_1);
-          } else fra.me.REG[7] = once_value_1;
-          fra.me.REG[7] = fra.me.REG[7];
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
-          fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-          fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+          } else fra.me.REG[8] = once_value_1;
+          fra.me.REG[8] = fra.me.REG[8];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+          fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
+          fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
           if (!once_value_2) {
-            fra.me.REG[7] = BOX_NativeString(" since both super-constructor ");
+            fra.me.REG[8] = BOX_NativeString(" since both super-constructor ");
             REGB2 = TAG_Int(30);
-            fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-            once_value_2 = fra.me.REG[7];
+            fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+            once_value_2 = fra.me.REG[8];
             register_static_object(&once_value_2);
-          } else fra.me.REG[7] = once_value_2;
-          fra.me.REG[7] = fra.me.REG[7];
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
-          REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          } else fra.me.REG[8] = once_value_2;
+          fra.me.REG[8] = fra.me.REG[8];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+          REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 288);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 306);
           }
-          fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[2])(fra.me.REG[2]);
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+          fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[3])(fra.me.REG[3]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
           if (!once_value_3) {
-            fra.me.REG[7] = BOX_NativeString(" and ");
+            fra.me.REG[8] = BOX_NativeString(" and ");
             REGB2 = TAG_Int(5);
-            fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-            once_value_3 = fra.me.REG[7];
+            fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+            once_value_3 = fra.me.REG[8];
             register_static_object(&once_value_3);
-          } else fra.me.REG[7] = once_value_3;
-          fra.me.REG[7] = fra.me.REG[7];
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
-          fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[5])(fra.me.REG[5]);
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+          } else fra.me.REG[8] = once_value_3;
+          fra.me.REG[8] = fra.me.REG[8];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+          fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[6])(fra.me.REG[6]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
           if (!once_value_4) {
-            fra.me.REG[5] = BOX_NativeString(" have paramters");
+            fra.me.REG[6] = BOX_NativeString(" have paramters");
             REGB2 = TAG_Int(15);
-            fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-            once_value_4 = fra.me.REG[5];
+            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+            once_value_4 = fra.me.REG[6];
             register_static_object(&once_value_4);
-          } else fra.me.REG[5] = once_value_4;
-          fra.me.REG[5] = fra.me.REG[5];
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
-          fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
-          CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], NIT_NULL, fra.me.REG[6]);
-          /* ./syntax//mmbuilder.nit:289 */
+          } else fra.me.REG[6] = once_value_4;
+          fra.me.REG[6] = fra.me.REG[6];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
+          fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
+          CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], NIT_NULL, fra.me.REG[7]);
+          /* syntax/mmbuilder.nit:307 */
           goto label5;
         }
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label6;
     }
   }
   label6: while(0);
-  /* ./syntax//mmbuilder.nit:293 */
-  ATTR_syntax___mmbuilder___MMImplicitInit____super_init(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./syntax//mmbuilder.nit:295 */
+  /* syntax/mmbuilder.nit:311 */
+  ATTR_syntax___mmbuilder___MMImplicitInit____super_init(fra.me.REG[2]) = fra.me.REG[3];
+  /* syntax/mmbuilder.nit:313 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  /* ./syntax//mmbuilder.nit:296 */
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  /* syntax/mmbuilder.nit:314 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(false);
       REGB0 = REGB2;
     } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB2;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:297 */
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    /* syntax/mmbuilder.nit:315 */
+    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 297);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 315);
     }
-    fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:298 */
+    fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
+    /* syntax/mmbuilder.nit:316 */
     REGB0 = TAG_Int(0);
-    REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 298);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 316);
     }
-    REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./../lib/standard//kernel.nit:335 */
+    REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
+    /* ../lib/standard/kernel.nit:352 */
     while(1) {
-      /* ./../lib/standard//kernel.nit:215 */
+      REGB1 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+      }
+      /* ../lib/standard/kernel.nit:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ../lib/standard/kernel.nit:352 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:298 */
+        /* syntax/mmbuilder.nit:316 */
         REGB1 = REGB0;
-        /* ./syntax//mmbuilder.nit:299 */
-        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        /* syntax/mmbuilder.nit:317 */
+        REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 299);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 317);
         }
-        fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[2])(fra.me.REG[2]);
-        /* ./../lib/standard//collection//array.nit:245 */
+        fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[3])(fra.me.REG[3]);
+        /* ../lib/standard/collection/array.nit:280 */
         REGB3 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+        if (UNTAG_Bool(REGB4)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ../lib/standard/kernel.nit:233 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB3));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ../lib/standard/collection/array.nit:280 */
         if (UNTAG_Bool(REGB3)) {
-          REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+          REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          }
+          REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
+          REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB4)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-          /* ./../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:245 */
+          /* ../lib/standard/collection/array.nit:280 */
           REGB4 = TAG_Bool(false);
           REGB3 = REGB4;
         }
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
-        fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-        REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        /* ../lib/standard/collection/array.nit:281 */
+        fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+        REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
-        fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB1)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ../lib/standard/collection/array.nit:718 */
+        fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
+        /* ../lib/standard/collection/array.nit:281 */
         goto label7;
         label7: while(0);
-        /* ./syntax//mmbuilder.nit:299 */
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-        /* ./../lib/standard//kernel.nit:337 */
+        /* syntax/mmbuilder.nit:317 */
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+        /* ../lib/standard/kernel.nit:354 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ../lib/standard/kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ../lib/standard/kernel.nit:354 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ../lib/standard/kernel.nit:352 */
         goto label8;
       }
     }
     label8: while(0);
   }
-  /* ./syntax//mmbuilder.nit:302 */
-  fra.me.REG[2] = CALL_syntax___syntax_base___MMImplicitInit___unassigned_attributes(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* syntax/mmbuilder.nit:320 */
+  fra.me.REG[3] = CALL_syntax___syntax_base___MMImplicitInit___unassigned_attributes(fra.me.REG[2])(fra.me.REG[2]);
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
-  REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+  /* ../lib/standard/collection/array.nit:270 */
+  REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
-  REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:236 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
+  /* ../lib/standard/collection/array.nit:271 */
+  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+    /* ../lib/standard/collection/array.nit:24 */
+    REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+    }
+    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
+    REGB1 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
-      REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      /* ../lib/standard/collection/array.nit:273 */
+      REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
-      }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:303 */
-      fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
-      /* ./syntax//mmbuilder.nit:304 */
-      REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+      }
+      /* ../lib/standard/collection/array.nit:718 */
+      fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
+      /* syntax/mmbuilder.nit:321 */
+      fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
+      /* syntax/mmbuilder.nit:322 */
+      REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
           REGB1 = TAG_Bool(false);
           REGB2 = REGB1;
         } else {
-          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
           REGB2 = REGB1;
         }
       }
       if (UNTAG_Bool(REGB2)) {
         goto label5;
       }
-      /* ./syntax//mmbuilder.nit:305 */
-      REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-      if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 305);
+      /* syntax/mmbuilder.nit:323 */
+      fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
+      /* syntax/mmbuilder.nit:324 */
+      fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+      fra.me.REG[8] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[8])(fra.me.REG[8]);
+      REGB2 = TAG_Char('_');
+      REGB1 = TAG_Bool(IS_EQUAL_ON(REGB2,fra.me.REG[8]));
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        REGB3 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+          REGB3 = TAG_Bool(false);
+          REGB1 = REGB3;
+        } else {
+          /* ../lib/standard/kernel.nit:378 */
+          REGB2 = TAG_Bool((fra.me.REG[8])==(REGB2));
+          /* syntax/mmbuilder.nit:324 */
+          REGB1 = REGB2;
+        }
       }
-      fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
-      REGB2 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
-      if (UNTAG_Bool(REGB2)) {
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(true);
+      } else {
+        fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+        fra.me.REG[8] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[8])(fra.me.REG[8]);
+        REGB2 = TAG_Char('@');
+        REGB3 = TAG_Bool(IS_EQUAL_ON(REGB2,fra.me.REG[8]));
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            /* ../lib/standard/kernel.nit:378 */
+            REGB2 = TAG_Bool((fra.me.REG[8])==(REGB2));
+            /* syntax/mmbuilder.nit:324 */
+            REGB3 = REGB2;
+          }
+        }
+        REGB1 = REGB3;
+      }
+      if (UNTAG_Bool(REGB1)) {
+        /* syntax/mmbuilder.nit:325 */
+        fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+        REGB1 = TAG_Int(1);
+        fra.me.REG[4] = CALL_standard___string___AbstractString___substring_from(fra.me.REG[4])(fra.me.REG[4], REGB1);
+        fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
+        fra.me.REG[6] = fra.me.REG[4];
+      }
+      /* syntax/mmbuilder.nit:327 */
+      REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 327);
+      }
+      fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
+      REGB1 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
+      if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 305);
+        nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 327);
       }
-      if (!once_value_9) {
-        if (!once_value_10) {
-          fra.me.REG[6] = BOX_NativeString("recv");
-          REGB2 = TAG_Int(4);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
-          once_value_10 = fra.me.REG[6];
-          register_static_object(&once_value_10);
-        } else fra.me.REG[6] = once_value_10;
-        fra.me.REG[6] = fra.me.REG[6];
-        fra.me.REG[6] = CALL_standard___symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
-        once_value_9 = fra.me.REG[6];
-        register_static_object(&once_value_9);
-      } else fra.me.REG[6] = once_value_9;
-      fra.me.REG[6] = fra.me.REG[6];
-      fra.me.REG[6] = NEW_MMParam_metamodel___static_type___MMParam___init(fra.me.REG[3], fra.me.REG[6]);
+      fra.me.REG[6] = NEW_MMParam_metamodel___static_type___MMParam___init(fra.me.REG[7], fra.me.REG[6]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-      /* ./../lib/standard//collection//array.nit:239 */
-      REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
-      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
-      REGB0 = REGB2;
+      /* ../lib/standard/collection/array.nit:274 */
+      REGB1 = TAG_Int(1);
+      /* ../lib/standard/kernel.nit:235 */
+      REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
+      /* ../lib/standard/collection/array.nit:274 */
+      REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
-      goto label11;
+      /* ../lib/standard/collection/array.nit:272 */
+      goto label9;
     }
   }
-  label11: while(0);
-  /* ./syntax//mmbuilder.nit:307 */
-  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[4] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[4])(fra.me.REG[4]);
-  fra.me.REG[4] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[1], NIT_NULL, fra.me.REG[4]);
-  CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
+  label9: while(0);
+  /* syntax/mmbuilder.nit:329 */
+  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[0] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[1], NIT_NULL, fra.me.REG[0]);
+  CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   label5: while(0);
   stack_frame_head = fra.me.prev;
   return;
@@ -1619,17 +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 = 315;
+  fra.me.line = 337;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcAncestor___local_class;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:315 */
+  /* syntax/mmbuilder.nit:337 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___MMSrcAncestor____local_class(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_syntax___mmbuilder, 315);
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_syntax___mmbuilder, 337);
   }
   fra.me.REG[0] = ATTR_syntax___mmbuilder___MMSrcAncestor____local_class(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1642,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 = 317;
+  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:317 */
+  /* syntax/mmbuilder.nit:339 */
   fra.me.REG[2] = fra.me.REG[0];
   CALL_metamodel___static_type___MMAncestor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./syntax//mmbuilder.nit:319 */
+  /* syntax/mmbuilder.nit:341 */
   ATTR_syntax___mmbuilder___MMSrcAncestor____local_class(fra.me.REG[2]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
@@ -1666,17 +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 = 330;
+  fra.me.line = 352;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:330 */
+  /* syntax/mmbuilder.nit:352 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___ClassBuilderVisitor____local_class_arity(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class_arity", LOCATE_syntax___mmbuilder, 330);
+    nit_abort("Uninitialized attribute %s", "_local_class_arity", LOCATE_syntax___mmbuilder, 352);
   }
   REGB0 = ATTR_syntax___mmbuilder___ClassBuilderVisitor____local_class_arity(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1688,14 +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 = 330;
+  fra.me.line = 352;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./syntax//mmbuilder.nit:330 */
+  /* syntax/mmbuilder.nit:352 */
   ATTR_syntax___mmbuilder___ClassBuilderVisitor____local_class_arity(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;
@@ -1705,13 +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 = 333;
+  fra.me.line = 355;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassBuilderVisitor___formals;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:333 */
+  /* syntax/mmbuilder.nit:355 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___ClassBuilderVisitor____formals(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1721,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 = 333;
+  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:333 */
+  /* syntax/mmbuilder.nit:355 */
   ATTR_syntax___mmbuilder___ClassBuilderVisitor____formals(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -1740,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 = 336;
+  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:336 */
+  /* syntax/mmbuilder.nit:358 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 336);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 358);
   }
   CALL_syntax___mmbuilder___ANode___accept_class_builder(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1764,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 = 337;
+  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:337 */
+  /* syntax/mmbuilder.nit:359 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos2] = 1;
@@ -1786,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 = 344;
+  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:344 */
+  /* syntax/mmbuilder.nit:366 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 344);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 366);
   }
   CALL_syntax___mmbuilder___ANode___accept_class_specialization_builder(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1810,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 = 345;
+  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:345 */
+  /* syntax/mmbuilder.nit:367 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos3] = 1;
@@ -1832,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 = 352;
+  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:352 */
+  /* syntax/mmbuilder.nit:374 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 352);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 374);
   }
   CALL_syntax___mmbuilder___ANode___accept_class_ancestor_builder(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1856,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 = 353;
+  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:353 */
+  /* syntax/mmbuilder.nit:375 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos4] = 1;
@@ -1878,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 = 360;
+  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:360 */
+  /* syntax/mmbuilder.nit:382 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 360);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 382);
   }
   CALL_syntax___mmbuilder___ANode___accept_class_verifier(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1902,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 = 361;
+  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:361 */
+  /* syntax/mmbuilder.nit:383 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos5] = 1;
@@ -1924,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 = 371;
+  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:371 */
+  /* syntax/mmbuilder.nit:393 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 371);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 393);
   }
   CALL_syntax___mmbuilder___ANode___accept_property_builder(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1948,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 = 372;
+  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:372 */
+  /* syntax/mmbuilder.nit:394 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos6] = 1;
@@ -1970,17 +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 = 380;
+  fra.me.line = 402;
   fra.me.meth = LOCATE_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:380 */
+  /* syntax/mmbuilder.nit:402 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___PropertyVerifierVisitor____signature_builder(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_signature_builder", LOCATE_syntax___mmbuilder, 380);
+    nit_abort("Uninitialized attribute %s", "_signature_builder", LOCATE_syntax___mmbuilder, 402);
   }
   fra.me.REG[0] = ATTR_syntax___mmbuilder___PropertyVerifierVisitor____signature_builder(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1991,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 = 380;
+  fra.me.line = 402;
   fra.me.meth = LOCATE_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_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:380 */
+  /* syntax/mmbuilder.nit:402 */
   ATTR_syntax___mmbuilder___PropertyVerifierVisitor____signature_builder(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2010,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 = 383;
+  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:383 */
+  /* syntax/mmbuilder.nit:405 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 383);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 405);
   }
   CALL_syntax___mmbuilder___ANode___accept_property_verifier(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2034,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 = 385;
+  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;
@@ -2045,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:385 */
+  /* syntax/mmbuilder.nit:407 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:387 */
+  /* syntax/mmbuilder.nit:409 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  /* ./syntax//mmbuilder.nit:388 */
+  /* syntax/mmbuilder.nit:410 */
   fra.me.REG[2] = NEW_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init();
   ATTR_syntax___mmbuilder___PropertyVerifierVisitor____signature_builder(fra.me.REG[3]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
@@ -2062,17 +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 = 394;
+  fra.me.line = 416;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___params;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:394 */
+  /* syntax/mmbuilder.nit:416 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___SignatureBuilder____params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_params", LOCATE_syntax___mmbuilder, 394);
+    nit_abort("Uninitialized attribute %s", "_params", LOCATE_syntax___mmbuilder, 416);
   }
   fra.me.REG[0] = ATTR_syntax___mmbuilder___SignatureBuilder____params(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2083,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 = 394;
+  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:394 */
+  /* syntax/mmbuilder.nit:416 */
   ATTR_syntax___mmbuilder___SignatureBuilder____params(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2102,17 +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 = 397;
+  fra.me.line = 419;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___untyped_params;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:397 */
+  /* syntax/mmbuilder.nit:419 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___SignatureBuilder____untyped_params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_untyped_params", LOCATE_syntax___mmbuilder, 397);
+    nit_abort("Uninitialized attribute %s", "_untyped_params", LOCATE_syntax___mmbuilder, 419);
   }
   fra.me.REG[0] = ATTR_syntax___mmbuilder___SignatureBuilder____untyped_params(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2123,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 = 397;
+  fra.me.line = 419;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___untyped_params__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_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:397 */
+  /* syntax/mmbuilder.nit:419 */
   ATTR_syntax___mmbuilder___SignatureBuilder____untyped_params(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2142,17 +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 = 400;
+  fra.me.line = 422;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___vararg_rank;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:400 */
+  /* syntax/mmbuilder.nit:422 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___SignatureBuilder____vararg_rank(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_vararg_rank", LOCATE_syntax___mmbuilder, 400);
+    nit_abort("Uninitialized attribute %s", "_vararg_rank", LOCATE_syntax___mmbuilder, 422);
   }
   REGB0 = ATTR_syntax___mmbuilder___SignatureBuilder____vararg_rank(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2164,14 +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 = 400;
+  fra.me.line = 422;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___vararg_rank__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./syntax//mmbuilder.nit:400 */
+  /* syntax/mmbuilder.nit:422 */
   ATTR_syntax___mmbuilder___SignatureBuilder____vararg_rank(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;
@@ -2182,17 +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 = 403;
+  fra.me.line = 425;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___closure_decls;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:403 */
+  /* syntax/mmbuilder.nit:425 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___SignatureBuilder____closure_decls(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closure_decls", LOCATE_syntax___mmbuilder, 403);
+    nit_abort("Uninitialized attribute %s", "_closure_decls", LOCATE_syntax___mmbuilder, 425);
   }
   fra.me.REG[0] = ATTR_syntax___mmbuilder___SignatureBuilder____closure_decls(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2203,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 = 403;
+  fra.me.line = 425;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___closure_decls__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_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:403 */
+  /* syntax/mmbuilder.nit:425 */
   ATTR_syntax___mmbuilder___SignatureBuilder____closure_decls(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2222,17 +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 = 406;
+  fra.me.line = 428;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___has_error_occured;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:406 */
+  /* syntax/mmbuilder.nit:428 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___SignatureBuilder____has_error_occured(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_has_error_occured", LOCATE_syntax___mmbuilder, 406);
+    nit_abort("Uninitialized attribute %s", "_has_error_occured", LOCATE_syntax___mmbuilder, 428);
   }
   REGB0 = ATTR_syntax___mmbuilder___SignatureBuilder____has_error_occured(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2244,14 +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 = 406;
+  fra.me.line = 428;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___has_error_occured__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./syntax//mmbuilder.nit:406 */
+  /* syntax/mmbuilder.nit:428 */
   ATTR_syntax___mmbuilder___SignatureBuilder____has_error_occured(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;
@@ -2261,13 +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 = 409;
+  fra.me.line = 431;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___signature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:409 */
+  /* syntax/mmbuilder.nit:431 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___SignatureBuilder____signature(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -2277,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 = 409;
+  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:409 */
+  /* syntax/mmbuilder.nit:431 */
   ATTR_syntax___mmbuilder___SignatureBuilder____signature(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2301,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;
@@ -2310,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 = 416;
+  fra.me.line = 438;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_class_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_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:416 */
+  /* syntax/mmbuilder.nit:438 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2328,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 = 417;
+  fra.me.line = 439;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_class_specialization_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_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:417 */
+  /* syntax/mmbuilder.nit:439 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2346,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 = 418;
+  fra.me.line = 440;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_class_ancestor_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_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:440 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2364,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 = 419;
+  fra.me.line = 441;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_class_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_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:419 */
+  /* syntax/mmbuilder.nit:441 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2382,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 = 420;
+  fra.me.line = 442;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_property_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_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:420 */
+  /* syntax/mmbuilder.nit:442 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2400,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 = 421;
+  fra.me.line = 443;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_property_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_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:421 */
+  /* syntax/mmbuilder.nit:443 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2423,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 = 425;
+  fra.me.line = 447;
   fra.me.meth = LOCATE_syntax___mmbuilder___AModule___import_super_modules;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
+  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;
@@ -2435,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:429 */
+  /* syntax/mmbuilder.nit:451 */
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* ./syntax//mmbuilder.nit:430 */
+  /* syntax/mmbuilder.nit:452 */
   fra.me.REG[4] = NIT_NULL;
-  /* ./syntax//mmbuilder.nit:431 */
+  /* syntax/mmbuilder.nit:453 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AModule___n_imports(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___AModule___import_super_modules_1));
-  /* ./syntax//mmbuilder.nit:441 */
+  /* syntax/mmbuilder.nit:463 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2457,14 +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:442 */
+    /* syntax/mmbuilder.nit:464 */
     REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:443 */
+      /* syntax/mmbuilder.nit:465 */
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 443);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 465);
       }
       fra.me.REG[4] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[4])(fra.me.REG[4]);
       if (!once_value_2) {
@@ -2475,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:445 */
+    /* syntax/mmbuilder.nit:467 */
     REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:446 */
+      /* syntax/mmbuilder.nit:468 */
       if (!once_value_3) {
         if (!once_value_4) {
           fra.me.REG[0] = BOX_NativeString("standard");
@@ -2496,16 +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:447 */
+      /* syntax/mmbuilder.nit:469 */
       fra.me.REG[0] = CALL_mmloader___ToolContext___get_module(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
-      /* ./syntax//mmbuilder.nit:448 */
+      /* syntax/mmbuilder.nit:470 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
-      /* ./syntax//mmbuilder.nit:449 */
+      /* syntax/mmbuilder.nit:471 */
       REGB0 = TAG_Int(1);
       CALL_metamodel___abstractmetamodel___MMModule___add_super_module(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], REGB0);
     }
   }
-  /* ./syntax//mmbuilder.nit:452 */
+  /* syntax/mmbuilder.nit:474 */
   CALL_metamodel___abstractmetamodel___MMContext___add_module(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2522,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:432 */
+    /* syntax/mmbuilder.nit:454 */
     fra.me.REG[1] = CALL_syntax___mmbuilder___AImport___module_name(fra.me.REG[0])(fra.me.REG[0]);
-    /* ./syntax//mmbuilder.nit:433 */
+    /* syntax/mmbuilder.nit:455 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -2545,15 +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:434 */
+      /* syntax/mmbuilder.nit:456 */
       fra.me.REG[1] = CALL_mmloader___ToolContext___get_module(closctx->REG[1])(closctx->REG[1], fra.me.REG[1], closctx->REG[2]);
-      /* ./syntax//mmbuilder.nit:435 */
+      /* syntax/mmbuilder.nit:457 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[3])(closctx->REG[3], fra.me.REG[1]);
-      /* ./syntax//mmbuilder.nit:436 */
+      /* syntax/mmbuilder.nit:458 */
       REGB0 = CALL_syntax___mmbuilder___AImport___visibility_level(fra.me.REG[0])(fra.me.REG[0]);
       CALL_metamodel___abstractmetamodel___MMModule___add_super_module(closctx->REG[2])(closctx->REG[2], fra.me.REG[1], REGB0);
     } else {
-      /* ./syntax//mmbuilder.nit:438 */
+      /* syntax/mmbuilder.nit:460 */
       closctx->REG[4] = fra.me.REG[0];
     }
     stack_frame_head = fra.me.prev;
@@ -2569,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 = 457;
+  fra.me.line = 479;
   fra.me.meth = LOCATE_syntax___mmbuilder___AModuledecl___accept_class_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
+  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;
@@ -2580,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:459 */
+  /* syntax/mmbuilder.nit:481 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AModuledecl___n_name(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_parser___parser_nodes___AModuleName___n_id(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[2] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
@@ -2594,7 +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:460 */
+    /* syntax/mmbuilder.nit:482 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AModuledecl___n_name(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[3] = CALL_parser___parser_nodes___AModuleName___n_id(fra.me.REG[3])(fra.me.REG[3]);
     REGB0 = TAG_Int(5);
@@ -2646,12 +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 = 466;
+  fra.me.line = 488;
   fra.me.meth = LOCATE_syntax___mmbuilder___AImport___module_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//mmbuilder.nit:466 */
-  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 466);
+  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;
 }
@@ -2660,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 = 469;
+  fra.me.line = 491;
   fra.me.meth = LOCATE_syntax___mmbuilder___AImport___visibility_level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//mmbuilder.nit:469 */
-  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 469);
+  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;
 }
@@ -2674,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 = 473;
+  fra.me.line = 495;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdImport___module_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:475 */
+  /* syntax/mmbuilder.nit:497 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdImport___n_name(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_parser___parser_nodes___AModuleName___n_id(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
@@ -2695,13 +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 = 477;
+  fra.me.line = 499;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdImport___visibility_level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:479 */
+  /* syntax/mmbuilder.nit:501 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdImport___n_visibility(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -2714,13 +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 = 483;
+  fra.me.line = 505;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANoImport___module_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:485 */
+  /* syntax/mmbuilder.nit:507 */
   fra.me.REG[0] = NIT_NULL;
   goto label1;
   label1: while(0);
@@ -2732,12 +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 = 490;
+  fra.me.line = 512;
   fra.me.meth = LOCATE_syntax___mmbuilder___AVisibility___level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//mmbuilder.nit:490 */
-  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 490);
+  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;
 }
@@ -2747,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 = 494;
+  fra.me.line = 516;
   fra.me.meth = LOCATE_syntax___mmbuilder___APublicVisibility___level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:494 */
+  /* syntax/mmbuilder.nit:516 */
   REGB0 = TAG_Int(1);
   goto label1;
   label1: while(0);
@@ -2766,13 +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 = 497;
+  fra.me.line = 519;
   fra.me.meth = LOCATE_syntax___mmbuilder___AProtectedVisibility___level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:497 */
+  /* syntax/mmbuilder.nit:519 */
   REGB0 = TAG_Int(2);
   goto label1;
   label1: while(0);
@@ -2785,13 +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 = 500;
+  fra.me.line = 522;
   fra.me.meth = LOCATE_syntax___mmbuilder___APrivateVisibility___level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:500 */
+  /* syntax/mmbuilder.nit:522 */
   REGB0 = TAG_Int(3);
   goto label1;
   label1: while(0);
@@ -2804,13 +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 = 503;
+  fra.me.line = 525;
   fra.me.meth = LOCATE_syntax___mmbuilder___AIntrudeVisibility___level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:503 */
+  /* syntax/mmbuilder.nit:525 */
   REGB0 = TAG_Int(0);
   goto label1;
   label1: while(0);
@@ -2818,40 +3173,44 @@ val_t syntax___mmbuilder___AIntrudeVisibility___level(val_t p0){
   return REGB0;
 }
 val_t syntax___mmbuilder___AClassdef___local_class(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 508;
+  fra.me.line = 530;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___local_class;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
+  fra.me.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:508 */
-  fra.me.REG[0] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  /* syntax/mmbuilder.nit:530 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 508);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 530);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t syntax___mmbuilder___AClassdef___name(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 511;
+  fra.me.line = 533;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//mmbuilder.nit:511 */
-  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 511);
+  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;
 }
@@ -2861,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 = 514;
+  fra.me.line = 536;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:515 */
+  /* syntax/mmbuilder.nit:537 */
   REGB0 = TAG_Int(0);
   goto label1;
   label1: while(0);
@@ -2880,13 +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 = 517;
+  fra.me.line = 539;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___visibility_level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:518 */
+  /* syntax/mmbuilder.nit:540 */
   REGB0 = TAG_Int(1);
   goto label1;
   label1: while(0);
@@ -2903,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 = 520;
+  fra.me.line = 542;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___accept_class_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
+  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;
@@ -2918,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:520 */
+  /* syntax/mmbuilder.nit:542 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:523 */
+  /* syntax/mmbuilder.nit:545 */
   fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:524 */
+  /* syntax/mmbuilder.nit:546 */
   fra.me.REG[5] = CALL_syntax___syntax_base___MMSrcModule___src_local_classes(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:525 */
+  /* syntax/mmbuilder.nit:547 */
   fra.me.REG[6] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:526 */
+    /* syntax/mmbuilder.nit:548 */
     fra.me.REG[6] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[6] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-    /* ./syntax//mmbuilder.nit:527 */
+    /* syntax/mmbuilder.nit:549 */
     ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]) = fra.me.REG[6];
-    /* ./syntax//mmbuilder.nit:528 */
+    /* syntax/mmbuilder.nit:550 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AStdClassdef, ID_parser___parser_nodes___AStdClassdef)) /*cast AStdClassdef*/;
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:530 */
+      /* syntax/mmbuilder.nit:552 */
       REGB0 = TAG_Int(5);
       fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_1) {
@@ -2964,7 +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, 530);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 552);
       }
       fra.me.REG[8] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[8])(fra.me.REG[8]);
       REGB0 = CALL_location___Location___line_start(fra.me.REG[8])(fra.me.REG[8]);
@@ -2981,16 +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:531 */
+      /* syntax/mmbuilder.nit:553 */
       goto label4;
     }
-    /* ./syntax//mmbuilder.nit:534 */
+    /* syntax/mmbuilder.nit:556 */
     fra.me.REG[7] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[6])(fra.me.REG[6]);
-    /* ./syntax//mmbuilder.nit:535 */
+    /* syntax/mmbuilder.nit:557 */
     while(1) {
       REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 535);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 557);
       }
       fra.me.REG[8] = CALL_syntax___syntax_base___AClassdef___next_node(fra.me.REG[7])(fra.me.REG[7]);
       REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
@@ -3009,7 +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, 535);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 557);
         }
         fra.me.REG[8] = CALL_syntax___syntax_base___AClassdef___next_node(fra.me.REG[7])(fra.me.REG[7]);
         fra.me.REG[7] = fra.me.REG[8];
@@ -3018,47 +3380,47 @@ void syntax___mmbuilder___AClassdef___accept_class_builder(val_t p0, val_t p1){
       }
     }
     label5: while(0);
-    /* ./syntax//mmbuilder.nit:536 */
+    /* syntax/mmbuilder.nit:558 */
     REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 536);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 558);
     }
     CALL_syntax___syntax_base___AClassdef___next_node__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
   } else {
-    /* ./syntax//mmbuilder.nit:538 */
+    /* syntax/mmbuilder.nit:560 */
     fra.me.REG[7] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = CALL_syntax___mmbuilder___AClassdef___arity(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[7] = NEW_MMSrcLocalClass_syntax___syntax_base___MMSrcLocalClass___init(fra.me.REG[4], fra.me.REG[7], fra.me.REG[2], REGB0);
     fra.me.REG[6] = fra.me.REG[7];
-    /* ./syntax//mmbuilder.nit:539 */
+    /* syntax/mmbuilder.nit:561 */
     ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]) = fra.me.REG[6];
-    /* ./syntax//mmbuilder.nit:540 */
+    /* syntax/mmbuilder.nit:562 */
     fra.me.REG[7] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
     CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7], fra.me.REG[6]);
-    /* ./syntax//mmbuilder.nit:541 */
+    /* syntax/mmbuilder.nit:563 */
     fra.me.REG[7] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:542 */
+      /* syntax/mmbuilder.nit:564 */
       CALL_syntax___mmbuilder___AClassdef___build_class_introduction(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
     } else {
-      /* ./syntax//mmbuilder.nit:544 */
+      /* syntax/mmbuilder.nit:566 */
       fra.me.REG[7] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMModule___global_class_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
-      /* ./syntax//mmbuilder.nit:545 */
+      /* syntax/mmbuilder.nit:567 */
       CALL_syntax___mmbuilder___AClassdef___build_class_refinement(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[7]);
     }
   }
-  /* ./syntax//mmbuilder.nit:549 */
+  /* syntax/mmbuilder.nit:571 */
   REGB0 = TAG_Int(0);
   CALL_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
-  /* ./syntax//mmbuilder.nit:550 */
+  /* syntax/mmbuilder.nit:572 */
   fra.me.REG[6] = CALL_syntax___syntax_base___MMSrcLocalClass___formal_dict(fra.me.REG[6])(fra.me.REG[6]);
   CALL_syntax___mmbuilder___ClassBuilderVisitor___formals__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-  /* ./syntax//mmbuilder.nit:553 */
+  /* syntax/mmbuilder.nit:575 */
   CALL_SUPER_syntax___mmbuilder___AClassdef___accept_class_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:556 */
+  /* syntax/mmbuilder.nit:578 */
   CALL_syntax___mmbuilder___ClassBuilderVisitor___formals__eq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
   label4: while(0);
   stack_frame_head = fra.me.prev;
@@ -3073,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 = 559;
+  fra.me.line = 581;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___build_class_introduction;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
+  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;
@@ -3084,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:561 */
+  /* syntax/mmbuilder.nit:583 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[0])(fra.me.REG[0]);
   CALL_metamodel___abstractmetamodel___MMLocalClass___new_global(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:562 */
+  /* syntax/mmbuilder.nit:584 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:564 */
+  /* syntax/mmbuilder.nit:586 */
   REGB0 = CALL_syntax___mmbuilder___AClassdef___visibility_level(fra.me.REG[0])(fra.me.REG[0]);
   CALL_metamodel___abstractmetamodel___MMGlobalClass___visibility_level__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
-  /* ./syntax//mmbuilder.nit:565 */
+  /* syntax/mmbuilder.nit:587 */
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AStdClassdef, ID_parser___parser_nodes___AStdClassdef)) /*cast AStdClassdef*/;
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:566 */
+    /* syntax/mmbuilder.nit:588 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_kwredef(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -3112,7 +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:567 */
+      /* syntax/mmbuilder.nit:589 */
       REGB0 = TAG_Int(3);
       fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_1) {
@@ -3138,18 +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:568 */
+      /* syntax/mmbuilder.nit:590 */
       goto label3;
     }
-    /* ./syntax//mmbuilder.nit:570 */
+    /* syntax/mmbuilder.nit:592 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = CALL_syntax___mmbuilder___AClasskind___is_interface(fra.me.REG[3])(fra.me.REG[3]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
-    /* ./syntax//mmbuilder.nit:571 */
+    /* syntax/mmbuilder.nit:593 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = CALL_syntax___mmbuilder___AClasskind___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
-    /* ./syntax//mmbuilder.nit:572 */
+    /* syntax/mmbuilder.nit:594 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = CALL_syntax___mmbuilder___AClasskind___is_enum(fra.me.REG[0])(fra.me.REG[0]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
@@ -3173,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 = 576;
+  fra.me.line = 598;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___build_class_refinement;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
+  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;
@@ -3185,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:578 */
+  /* syntax/mmbuilder.nit:600 */
   fra.me.REG[3] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[0])(fra.me.REG[0]);
   CALL_metamodel___abstractmetamodel___MMLocalClass___set_global(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:580 */
+  /* syntax/mmbuilder.nit:602 */
   fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
   CALL_syntax___syntax_base___MMGlobalClass___check_visibility(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:581 */
+  /* syntax/mmbuilder.nit:603 */
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AStdClassdef, ID_parser___parser_nodes___AStdClassdef)) /*cast AStdClassdef*/;
   if (UNTAG_Bool(REGB0)) {
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_kwredef(fra.me.REG[0])(fra.me.REG[0]);
@@ -3212,7 +3576,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:582 */
+    /* syntax/mmbuilder.nit:604 */
     REGB0 = TAG_Int(3);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -3238,29 +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:583 */
+    /* syntax/mmbuilder.nit:605 */
     goto label3;
   }
-  /* ./syntax//mmbuilder.nit:586 */
+  /* syntax/mmbuilder.nit:608 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[3] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[0]);
   REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 586);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 608);
   }
   REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[3])(fra.me.REG[3]);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ../lib/standard/kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ./syntax//mmbuilder.nit:586 */
+    /* syntax/mmbuilder.nit:608 */
     REGB2 = REGB1;
   }
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:587 */
+    /* syntax/mmbuilder.nit:609 */
     REGB2 = TAG_Int(5);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
     if (!once_value_4) {
@@ -3275,7 +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, 587);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 609);
     }
     REGB2 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
@@ -3305,7 +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:590 */
+  /* syntax/mmbuilder.nit:612 */
   REGB2 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AStdClassdef, ID_parser___parser_nodes___AStdClassdef)) /*cast AStdClassdef*/;
   if (UNTAG_Bool(REGB2)) {
     REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[2])(fra.me.REG[2]);
@@ -3320,36 +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:591 */
+      /* syntax/mmbuilder.nit:613 */
       REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[2])(fra.me.REG[2]);
       REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-      /* ./syntax//mmbuilder.nit:590 */
+      /* syntax/mmbuilder.nit:612 */
       REGB2 = REGB1;
     }
     if (UNTAG_Bool(REGB2)) {
-      /* ./syntax//mmbuilder.nit:591 */
+      /* syntax/mmbuilder.nit:613 */
       fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[0])(fra.me.REG[0]);
       REGB2 = CALL_syntax___mmbuilder___AClasskind___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
     } else {
-      /* ./syntax//mmbuilder.nit:590 */
+      /* syntax/mmbuilder.nit:612 */
       REGB1 = TAG_Bool(false);
       REGB2 = REGB1;
     }
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(true);
     } else {
-      /* ./syntax//mmbuilder.nit:592 */
+      /* syntax/mmbuilder.nit:614 */
       REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[2])(fra.me.REG[2]);
       REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-      /* ./syntax//mmbuilder.nit:590 */
+      /* syntax/mmbuilder.nit:612 */
       REGB2 = REGB1;
     }
     if (UNTAG_Bool(REGB2)) {
-      /* ./syntax//mmbuilder.nit:592 */
+      /* syntax/mmbuilder.nit:614 */
       fra.me.REG[2] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[0])(fra.me.REG[0]);
       REGB2 = CALL_syntax___mmbuilder___AClasskind___is_enum(fra.me.REG[2])(fra.me.REG[2]);
     } else {
-      /* ./syntax//mmbuilder.nit:590 */
+      /* syntax/mmbuilder.nit:612 */
       REGB1 = TAG_Bool(false);
       REGB2 = REGB1;
     }
@@ -3358,7 +3722,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:594 */
+    /* syntax/mmbuilder.nit:616 */
     REGB2 = TAG_Int(3);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
     if (!once_value_7) {
@@ -3409,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 = 598;
+  fra.me.line = 620;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___accept_class_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
+  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;
@@ -3424,66 +3789,71 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:598 */
+  /* syntax/mmbuilder.nit:620 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:600 */
+  /* syntax/mmbuilder.nit:622 */
   CALL_SUPER_syntax___mmbuilder___AClassdef___accept_class_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:601 */
+  /* syntax/mmbuilder.nit:623 */
   fra.me.REG[1] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 601);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 623);
   }
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:602 */
+  /* syntax/mmbuilder.nit:624 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 602);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 624);
   }
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:603 */
+      /* syntax/mmbuilder.nit:625 */
       fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
-      /* ./syntax//mmbuilder.nit:604 */
+      /* syntax/mmbuilder.nit:626 */
       REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[1])(fra.me.REG[1]);
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:605 */
+        /* syntax/mmbuilder.nit:627 */
         REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[6])(fra.me.REG[6]);
         if (UNTAG_Bool(REGB1)) {
-          /* ./syntax//mmbuilder.nit:606 */
+          /* syntax/mmbuilder.nit:628 */
           REGB1 = TAG_Int(5);
           fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
           if (!once_value_1) {
@@ -3522,11 +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:607 */
+          /* syntax/mmbuilder.nit:629 */
           REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[6])(fra.me.REG[6]);
           REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
           if (UNTAG_Bool(REGB1)) {
-            /* ./syntax//mmbuilder.nit:608 */
+            /* syntax/mmbuilder.nit:630 */
             REGB1 = TAG_Int(5);
             fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_4) {
@@ -3567,10 +3937,10 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
           }
         }
       } else {
-        /* ./syntax//mmbuilder.nit:610 */
+        /* syntax/mmbuilder.nit:632 */
         REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[1])(fra.me.REG[1]);
         if (UNTAG_Bool(REGB1)) {
-          /* ./syntax//mmbuilder.nit:611 */
+          /* syntax/mmbuilder.nit:633 */
           REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[6])(fra.me.REG[6]);
           REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
           if (UNTAG_Bool(REGB1)) {
@@ -3581,7 +3951,7 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
             REGB1 = REGB2;
           }
           if (UNTAG_Bool(REGB1)) {
-            /* ./syntax//mmbuilder.nit:612 */
+            /* syntax/mmbuilder.nit:634 */
             REGB1 = TAG_Int(5);
             fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_7) {
@@ -3621,10 +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:615 */
+          /* syntax/mmbuilder.nit:637 */
           REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[6])(fra.me.REG[6]);
           if (UNTAG_Bool(REGB1)) {
-            /* ./syntax//mmbuilder.nit:616 */
+            /* syntax/mmbuilder.nit:638 */
             REGB1 = TAG_Int(5);
             fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_10) {
@@ -3665,14 +4035,14 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
           }
         }
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label13;
     }
   }
@@ -3685,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 = 623;
+  fra.me.line = 645;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  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:623 */
+  /* syntax/mmbuilder.nit:645 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:625 */
+  /* syntax/mmbuilder.nit:647 */
   fra.me.REG[2] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
   CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:626 */
+  /* syntax/mmbuilder.nit:648 */
   CALL_SUPER_syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:627 */
+  /* syntax/mmbuilder.nit:649 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class__eq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
   stack_frame_head = fra.me.prev;
   return;
@@ -3714,13 +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 = 632;
+  fra.me.line = 654;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClasskind___is_interface;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:632 */
+  /* syntax/mmbuilder.nit:654 */
   REGB0 = TAG_Bool(false);
   goto label1;
   label1: while(0);
@@ -3733,13 +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 = 633;
+  fra.me.line = 655;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClasskind___is_enum;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:633 */
+  /* syntax/mmbuilder.nit:655 */
   REGB0 = TAG_Bool(false);
   goto label1;
   label1: while(0);
@@ -3752,13 +4125,14 @@ val_t syntax___mmbuilder___AClasskind___is_abstract(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 634;
+  fra.me.line = 656;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClasskind___is_abstract;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:634 */
+  /* syntax/mmbuilder.nit:656 */
   REGB0 = TAG_Bool(false);
   goto label1;
   label1: while(0);
@@ -3771,13 +4145,14 @@ val_t syntax___mmbuilder___AClasskind___is_extern(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 635;
+  fra.me.line = 657;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClasskind___is_extern;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:635 */
+  /* syntax/mmbuilder.nit:657 */
   REGB0 = TAG_Bool(false);
   goto label1;
   label1: while(0);
@@ -3790,13 +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 = 639;
+  fra.me.line = 661;
   fra.me.meth = LOCATE_syntax___mmbuilder___AInterfaceClasskind___is_interface;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:639 */
+  /* syntax/mmbuilder.nit:661 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -3809,13 +4185,14 @@ val_t syntax___mmbuilder___AEnumClasskind___is_enum(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 642;
+  fra.me.line = 664;
   fra.me.meth = LOCATE_syntax___mmbuilder___AEnumClasskind___is_enum;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:642 */
+  /* syntax/mmbuilder.nit:664 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -3828,13 +4205,14 @@ val_t syntax___mmbuilder___AExternClasskind___is_extern(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 645;
+  fra.me.line = 667;
   fra.me.meth = LOCATE_syntax___mmbuilder___AExternClasskind___is_extern;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:645 */
+  /* syntax/mmbuilder.nit:667 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -3847,13 +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 = 648;
+  fra.me.line = 670;
   fra.me.meth = LOCATE_syntax___mmbuilder___AAbstractClasskind___is_abstract;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:648 */
+  /* syntax/mmbuilder.nit:670 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -3866,17 +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 = 652;
+  fra.me.line = 674;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdClassdef___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:654 */
+  /* syntax/mmbuilder.nit:676 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_id(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 654);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 676);
   }
   fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -3890,13 +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 = 656;
+  fra.me.line = 678;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdClassdef___arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:658 */
+  /* syntax/mmbuilder.nit:680 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_formaldefs(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -3911,24 +4292,25 @@ void syntax___mmbuilder___AStdClassdef___accept_class_specialization_builder(val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 660;
+  fra.me.line = 682;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdClassdef___accept_class_specialization_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  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:660 */
+  /* syntax/mmbuilder.nit:682 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:662 */
+  /* syntax/mmbuilder.nit:684 */
   CALL_SUPER_syntax___mmbuilder___AStdClassdef___accept_class_specialization_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:664 */
+  /* syntax/mmbuilder.nit:686 */
   fra.me.REG[1] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:665 */
+  /* syntax/mmbuilder.nit:687 */
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[3] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[3]));
@@ -3938,23 +4320,23 @@ void syntax___mmbuilder___AStdClassdef___accept_class_specialization_builder(val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:666 */
+    /* syntax/mmbuilder.nit:688 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = CALL_syntax___mmbuilder___AClasskind___is_interface(fra.me.REG[3])(fra.me.REG[3]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    /* ./syntax//mmbuilder.nit:667 */
+    /* syntax/mmbuilder.nit:689 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = CALL_syntax___mmbuilder___AClasskind___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    /* ./syntax//mmbuilder.nit:668 */
+    /* syntax/mmbuilder.nit:690 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = CALL_syntax___mmbuilder___AClasskind___is_enum(fra.me.REG[3])(fra.me.REG[3]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    /* ./syntax//mmbuilder.nit:669 */
+    /* syntax/mmbuilder.nit:691 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = CALL_syntax___mmbuilder___AClasskind___is_extern(fra.me.REG[3])(fra.me.REG[3]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    /* ./syntax//mmbuilder.nit:670 */
+    /* syntax/mmbuilder.nit:692 */
     REGB0 = CALL_syntax___mmbuilder___AClassdef___visibility_level(fra.me.REG[2])(fra.me.REG[2]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___visibility_level__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
   }
@@ -3996,10 +4378,11 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     static val_t once_value_29; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 673;
+  fra.me.line = 695;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdClassdef___accept_class_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
+  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;
@@ -4011,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:673 */
+  /* syntax/mmbuilder.nit:695 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:675 */
+  /* syntax/mmbuilder.nit:697 */
   CALL_SUPER_syntax___mmbuilder___AStdClassdef___accept_class_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:676 */
+  /* syntax/mmbuilder.nit:698 */
   fra.me.REG[1] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 676);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 698);
   }
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:677 */
+  /* syntax/mmbuilder.nit:699 */
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[4] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[4]));
@@ -4033,7 +4416,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:679 */
+    /* syntax/mmbuilder.nit:701 */
     fra.me.REG[4] = CALL_parser___parser_nodes___AStdClassdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -4049,7 +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:680 */
+      /* syntax/mmbuilder.nit:702 */
       REGB0 = TAG_Int(3);
       fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_1) {
@@ -4076,62 +4459,67 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
       fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
       CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
     }
-    /* ./syntax//mmbuilder.nit:682 */
+    /* syntax/mmbuilder.nit:704 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[1])(fra.me.REG[1]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:683 */
+      /* syntax/mmbuilder.nit:705 */
       fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalClass___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Bool(true);
       CALL_metamodel___abstractmetamodel___MMModule___is_extern_hybrid__eq(fra.me.REG[4])(fra.me.REG[4], REGB0);
     }
-    /* ./syntax//mmbuilder.nit:686 */
+    /* syntax/mmbuilder.nit:708 */
     fra.me.REG[4] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 686);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 708);
     }
     fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[4])(fra.me.REG[4]);
-    /* ./../lib/standard//collection//array.nit:234 */
+    /* ../lib/standard/collection/array.nit:269 */
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:270 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./../lib/standard//collection//array.nit:236 */
+    /* ../lib/standard/collection/array.nit:271 */
     fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ../lib/standard/collection/array.nit:272 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+      if (UNTAG_Bool(REGB2)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+      }
+      /* ../lib/standard/kernel.nit:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:238 */
+        /* ../lib/standard/collection/array.nit:273 */
         REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ../lib/standard/collection/array.nit:718 */
         fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-        /* ./syntax//mmbuilder.nit:687 */
+        /* syntax/mmbuilder.nit:709 */
         fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
-        /* ./syntax//mmbuilder.nit:688 */
+        /* syntax/mmbuilder.nit:710 */
         REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[1])(fra.me.REG[1]);
         if (UNTAG_Bool(REGB1)) {
-          /* ./syntax//mmbuilder.nit:689 */
+          /* syntax/mmbuilder.nit:711 */
           REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[6])(fra.me.REG[6]);
           if (UNTAG_Bool(REGB1)) {
-            /* ./syntax//mmbuilder.nit:690 */
+            /* syntax/mmbuilder.nit:712 */
             REGB1 = TAG_Int(5);
             fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_3) {
@@ -4170,11 +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:691 */
+            /* syntax/mmbuilder.nit:713 */
             REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[6])(fra.me.REG[6]);
             REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
             if (UNTAG_Bool(REGB1)) {
-              /* ./syntax//mmbuilder.nit:692 */
+              /* syntax/mmbuilder.nit:714 */
               REGB1 = TAG_Int(5);
               fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
               if (!once_value_6) {
@@ -4215,10 +4603,10 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
             }
           }
         } else {
-          /* ./syntax//mmbuilder.nit:694 */
+          /* syntax/mmbuilder.nit:716 */
           REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[1])(fra.me.REG[1]);
           if (UNTAG_Bool(REGB1)) {
-            /* ./syntax//mmbuilder.nit:695 */
+            /* syntax/mmbuilder.nit:717 */
             REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[6])(fra.me.REG[6]);
             REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
             if (UNTAG_Bool(REGB1)) {
@@ -4229,7 +4617,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
               REGB1 = REGB2;
             }
             if (UNTAG_Bool(REGB1)) {
-              /* ./syntax//mmbuilder.nit:696 */
+              /* syntax/mmbuilder.nit:718 */
               REGB1 = TAG_Int(5);
               fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
               if (!once_value_9) {
@@ -4269,10 +4657,10 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
               CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
             }
           } else {
-            /* ./syntax//mmbuilder.nit:698 */
+            /* syntax/mmbuilder.nit:720 */
             REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[1])(fra.me.REG[1]);
             if (UNTAG_Bool(REGB1)) {
-              /* ./syntax//mmbuilder.nit:699 */
+              /* syntax/mmbuilder.nit:721 */
               REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[6])(fra.me.REG[6]);
               REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
               if (UNTAG_Bool(REGB1)) {
@@ -4283,7 +4671,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
                REGB1 = REGB2;
               }
               if (UNTAG_Bool(REGB1)) {
-               /* ./syntax//mmbuilder.nit:700 */
+               /* syntax/mmbuilder.nit:722 */
                REGB1 = TAG_Int(5);
                fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_12) {
@@ -4323,10 +4711,10 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
                CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
               }
             } else {
-              /* ./syntax//mmbuilder.nit:703 */
+              /* syntax/mmbuilder.nit:725 */
               REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[6])(fra.me.REG[6]);
               if (UNTAG_Bool(REGB1)) {
-               /* ./syntax//mmbuilder.nit:704 */
+               /* syntax/mmbuilder.nit:726 */
                REGB1 = TAG_Int(5);
                fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_15) {
@@ -4365,10 +4753,10 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
                fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
                CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
               } else {
-               /* ./syntax//mmbuilder.nit:705 */
+               /* syntax/mmbuilder.nit:727 */
                REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[6])(fra.me.REG[6]);
                if (UNTAG_Bool(REGB1)) {
-               /* ./syntax//mmbuilder.nit:706 */
+               /* syntax/mmbuilder.nit:728 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_18) {
@@ -4411,25 +4799,25 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
             }
           }
         }
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ../lib/standard/kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ../lib/standard/collection/array.nit:272 */
         goto label21;
       }
     }
     label21: while(0);
-    /* ./syntax//mmbuilder.nit:711 */
+    /* syntax/mmbuilder.nit:733 */
     goto label22;
   }
-  /* ./syntax//mmbuilder.nit:716 */
+  /* syntax/mmbuilder.nit:738 */
   fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
   CALL_syntax___syntax_base___MMGlobalClass___check_visibility(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2], fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:717 */
+  /* syntax/mmbuilder.nit:739 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -4444,7 +4832,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:718 */
+    /* syntax/mmbuilder.nit:740 */
     REGB0 = TAG_Int(3);
     fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_23) {
@@ -4470,29 +4858,29 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[0]);
-    /* ./syntax//mmbuilder.nit:719 */
+    /* syntax/mmbuilder.nit:741 */
     goto label22;
   }
-  /* ./syntax//mmbuilder.nit:722 */
+  /* syntax/mmbuilder.nit:744 */
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 722);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 744);
   }
   REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[0])(fra.me.REG[0]);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ../lib/standard/kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ./syntax//mmbuilder.nit:722 */
+    /* syntax/mmbuilder.nit:744 */
     REGB2 = REGB1;
   }
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:723 */
+    /* syntax/mmbuilder.nit:745 */
     REGB2 = TAG_Int(5);
     fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
     if (!once_value_25) {
@@ -4507,7 +4895,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     fra.me.REG[4] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
     REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 723);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 745);
     }
     REGB2 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
@@ -4537,7 +4925,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[0]);
   }
-  /* ./syntax//mmbuilder.nit:727 */
+  /* syntax/mmbuilder.nit:749 */
   REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[1])(fra.me.REG[1]);
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   if (UNTAG_Bool(REGB2)) {
@@ -4550,60 +4938,60 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
   if (UNTAG_Bool(REGB2)) {
     REGB2 = TAG_Bool(true);
   } else {
-    /* ./syntax//mmbuilder.nit:728 */
+    /* syntax/mmbuilder.nit:750 */
     REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[1])(fra.me.REG[1]);
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-    /* ./syntax//mmbuilder.nit:727 */
+    /* syntax/mmbuilder.nit:749 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:728 */
+    /* syntax/mmbuilder.nit:750 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
     REGB2 = CALL_syntax___mmbuilder___AClasskind___is_abstract(fra.me.REG[0])(fra.me.REG[0]);
   } else {
-    /* ./syntax//mmbuilder.nit:727 */
+    /* syntax/mmbuilder.nit:749 */
     REGB1 = TAG_Bool(false);
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
     REGB2 = TAG_Bool(true);
   } else {
-    /* ./syntax//mmbuilder.nit:729 */
+    /* syntax/mmbuilder.nit:751 */
     REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[1])(fra.me.REG[1]);
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-    /* ./syntax//mmbuilder.nit:727 */
+    /* syntax/mmbuilder.nit:749 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:729 */
+    /* syntax/mmbuilder.nit:751 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
     REGB2 = CALL_syntax___mmbuilder___AClasskind___is_enum(fra.me.REG[0])(fra.me.REG[0]);
   } else {
-    /* ./syntax//mmbuilder.nit:727 */
+    /* syntax/mmbuilder.nit:749 */
     REGB1 = TAG_Bool(false);
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
     REGB2 = TAG_Bool(true);
   } else {
-    /* ./syntax//mmbuilder.nit:730 */
+    /* syntax/mmbuilder.nit:752 */
     REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[1])(fra.me.REG[1]);
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-    /* ./syntax//mmbuilder.nit:727 */
+    /* syntax/mmbuilder.nit:749 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:730 */
+    /* syntax/mmbuilder.nit:752 */
     fra.me.REG[1] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
     REGB2 = CALL_syntax___mmbuilder___AClasskind___is_extern(fra.me.REG[1])(fra.me.REG[1]);
   } else {
-    /* ./syntax//mmbuilder.nit:727 */
+    /* syntax/mmbuilder.nit:749 */
     REGB1 = TAG_Bool(false);
     REGB2 = REGB1;
   }
-  /* ./syntax//mmbuilder.nit:726 */
+  /* syntax/mmbuilder.nit:748 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:732 */
+    /* syntax/mmbuilder.nit:754 */
     REGB2 = TAG_Int(3);
     fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
     if (!once_value_28) {
@@ -4640,13 +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 = 736;
+  fra.me.line = 758;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdClassdef___visibility_level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:738 */
+  /* syntax/mmbuilder.nit:760 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_visibility(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -4662,13 +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 = 743;
+  fra.me.line = 765;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMainClassdef___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:745 */
+  /* syntax/mmbuilder.nit:767 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("Sys");
@@ -4696,13 +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 = 750;
+  fra.me.line = 772;
   fra.me.meth = LOCATE_syntax___mmbuilder___ATopClassdef___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:752 */
+  /* syntax/mmbuilder.nit:774 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("Object");
@@ -4729,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 = 760;
+  fra.me.line = 782;
   fra.me.meth = LOCATE_syntax___mmbuilder___AFormaldef___accept_class_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
+  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;
@@ -4741,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:760 */
+  /* syntax/mmbuilder.nit:782 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:762 */
+  /* syntax/mmbuilder.nit:784 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AFormaldef___n_id(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:763 */
+  /* syntax/mmbuilder.nit:785 */
   REGB0 = CALL_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[5] = NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___init(fra.me.REG[4], REGB0, fra.me.REG[5]);
-  /* ./syntax//mmbuilder.nit:764 */
+  /* syntax/mmbuilder.nit:786 */
   ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]) = fra.me.REG[5];
-  /* ./syntax//mmbuilder.nit:765 */
+  /* syntax/mmbuilder.nit:787 */
   REGB0 = CALL_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity(fra.me.REG[3])(fra.me.REG[3]);
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ../lib/standard/kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./syntax//mmbuilder.nit:765 */
+  /* syntax/mmbuilder.nit:787 */
   CALL_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
-  /* ./syntax//mmbuilder.nit:766 */
+  /* syntax/mmbuilder.nit:788 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   CALL_metamodel___genericity___MMLocalClass___register_formal(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-  /* ./syntax//mmbuilder.nit:767 */
+  /* syntax/mmbuilder.nit:789 */
   fra.me.REG[3] = CALL_syntax___mmbuilder___ClassBuilderVisitor___formals(fra.me.REG[3])(fra.me.REG[3]);
   REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 767);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 789);
   }
   CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4], fra.me.REG[5]);
-  /* ./syntax//mmbuilder.nit:768 */
+  /* syntax/mmbuilder.nit:790 */
   CALL_SUPER_syntax___mmbuilder___AFormaldef___accept_class_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -4786,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 = 771;
+  fra.me.line = 793;
   fra.me.meth = LOCATE_syntax___mmbuilder___AFormaldef___accept_class_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
+  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;
@@ -4798,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:771 */
+  /* syntax/mmbuilder.nit:793 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:773 */
+  /* syntax/mmbuilder.nit:795 */
   CALL_SUPER_syntax___mmbuilder___AFormaldef___accept_class_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:774 */
+  /* syntax/mmbuilder.nit:796 */
   fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:775 */
+  /* syntax/mmbuilder.nit:797 */
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:776 */
+  /* syntax/mmbuilder.nit:798 */
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[0]));
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -4816,7 +5209,7 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:777 */
+    /* syntax/mmbuilder.nit:799 */
     fra.me.REG[4] = CALL_parser___parser_nodes___AFormaldef___n_type(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -4831,25 +5224,25 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
       }
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:778 */
+      /* syntax/mmbuilder.nit:800 */
       fra.me.REG[4] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
       fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
       fra.me.REG[5] = CALL_metamodel___inheritance___MMModule___type_any(fra.me.REG[5])(fra.me.REG[5]);
       fra.me.REG[5] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[5])(fra.me.REG[5]);
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 778);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 800);
       }
       CALL_metamodel___genericity___MMTypeFormalParameter___bound__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     } else {
-      /* ./syntax//mmbuilder.nit:780 */
+      /* syntax/mmbuilder.nit:802 */
       fra.me.REG[5] = CALL_parser___parser_nodes___AFormaldef___n_type(fra.me.REG[2])(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 780);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 802);
       }
       fra.me.REG[5] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-      /* ./syntax//mmbuilder.nit:781 */
+      /* syntax/mmbuilder.nit:803 */
       REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -4865,27 +5258,27 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
       if (UNTAG_Bool(REGB0)) {
         goto label1;
       }
-      /* ./syntax//mmbuilder.nit:782 */
+      /* syntax/mmbuilder.nit:804 */
       fra.me.REG[4] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 782);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 804);
       }
       CALL_metamodel___genericity___MMTypeFormalParameter___bound__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     }
   } else {
-    /* ./syntax//mmbuilder.nit:785 */
+    /* syntax/mmbuilder.nit:807 */
     fra.me.REG[5] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 785);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 807);
     }
     REGB0 = CALL_metamodel___genericity___MMTypeFormalParameter___position(fra.me.REG[5])(fra.me.REG[5]);
     fra.me.REG[0] = CALL_metamodel___genericity___MMLocalClass___get_formal(fra.me.REG[0])(fra.me.REG[0], REGB0);
     fra.me.REG[0] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
     fra.me.REG[5] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
-    /* ./syntax//mmbuilder.nit:786 */
+    /* syntax/mmbuilder.nit:808 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AFormaldef___n_type(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -4900,22 +5293,22 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
       }
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:787 */
+      /* syntax/mmbuilder.nit:809 */
       fra.me.REG[0] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 787);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 809);
       }
       CALL_metamodel___genericity___MMTypeFormalParameter___bound__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
     } else {
-      /* ./syntax//mmbuilder.nit:789 */
+      /* syntax/mmbuilder.nit:811 */
       fra.me.REG[0] = CALL_parser___parser_nodes___AFormaldef___n_type(fra.me.REG[2])(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 789);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 811);
       }
       fra.me.REG[0] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-      /* ./syntax//mmbuilder.nit:790 */
+      /* syntax/mmbuilder.nit:812 */
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -4931,18 +5324,18 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
       if (UNTAG_Bool(REGB0)) {
         goto label1;
       }
-      /* ./syntax//mmbuilder.nit:791 */
+      /* syntax/mmbuilder.nit:813 */
       fra.me.REG[4] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 791);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 813);
       }
       CALL_metamodel___genericity___MMTypeFormalParameter___bound__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
-      /* ./syntax//mmbuilder.nit:792 */
+      /* syntax/mmbuilder.nit:814 */
       fra.me.REG[0] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 792);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 814);
       }
       fra.me.REG[0] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[5]));
@@ -4953,7 +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:793 */
+        /* syntax/mmbuilder.nit:815 */
         REGB0 = TAG_Int(7);
         fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
         if (!once_value_2) {
@@ -4979,7 +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, 793);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 815);
         }
         fra.me.REG[1] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
@@ -5018,13 +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 = 801;
+  fra.me.line = 823;
   fra.me.meth = LOCATE_syntax___mmbuilder___ASuperclass___ancestor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:801 */
+  /* syntax/mmbuilder.nit:823 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___ASuperclass____ancestor(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -5036,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 = 803;
+  fra.me.line = 825;
   fra.me.meth = LOCATE_syntax___mmbuilder___ASuperclass___accept_class_specialization_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  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:803 */
+  /* syntax/mmbuilder.nit:825 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:805 */
+  /* syntax/mmbuilder.nit:827 */
   CALL_SUPER_syntax___mmbuilder___ASuperclass___accept_class_specialization_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:806 */
+  /* syntax/mmbuilder.nit:828 */
   fra.me.REG[1] = CALL_parser___parser_nodes___ASuperclass___n_type(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[1] = CALL_syntax___syntax_base___AType___get_local_class(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:807 */
+  /* syntax/mmbuilder.nit:829 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -5070,11 +5465,11 @@ void syntax___mmbuilder___ASuperclass___accept_class_specialization_builder(val_
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:808 */
+  /* syntax/mmbuilder.nit:830 */
   fra.me.REG[1] = NEW_MMSrcAncestor_syntax___mmbuilder___MMSrcAncestor___init(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:809 */
+  /* syntax/mmbuilder.nit:831 */
   ATTR_syntax___mmbuilder___ASuperclass____ancestor(fra.me.REG[2]) = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:810 */
+  /* syntax/mmbuilder.nit:832 */
   fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   CALL_metamodel___inheritance___MMLocalClass___add_direct_parent(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   label1: while(0);
@@ -5087,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 = 813;
+  fra.me.line = 835;
   fra.me.meth = LOCATE_syntax___mmbuilder___ASuperclass___accept_class_ancestor_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  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:813 */
+  /* syntax/mmbuilder.nit:835 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:815 */
+  /* syntax/mmbuilder.nit:837 */
   CALL_SUPER_syntax___mmbuilder___ASuperclass___accept_class_ancestor_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:816 */
+  /* syntax/mmbuilder.nit:838 */
   fra.me.REG[1] = ATTR_syntax___mmbuilder___ASuperclass____ancestor(fra.me.REG[2]);
   fra.me.REG[0] = CALL_parser___parser_nodes___ASuperclass___n_type(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[0] = CALL_syntax___syntax_base___AType___get_unchecked_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 816);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 838);
   }
   CALL_metamodel___static_type___MMAncestor___stype__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:817 */
+  /* syntax/mmbuilder.nit:839 */
   fra.me.REG[2] = ATTR_syntax___mmbuilder___ASuperclass____ancestor(fra.me.REG[2]);
   fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[3] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 817);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 839);
   }
   CALL_metamodel___static_type___MMAncestor___inheriter__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
@@ -5128,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 = 820;
+  fra.me.line = 842;
   fra.me.meth = LOCATE_syntax___mmbuilder___ASuperclass___accept_class_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  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:820 */
+  /* syntax/mmbuilder.nit:842 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:822 */
+  /* syntax/mmbuilder.nit:844 */
   CALL_SUPER_syntax___mmbuilder___ASuperclass___accept_class_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:823 */
+  /* syntax/mmbuilder.nit:845 */
   fra.me.REG[2] = CALL_parser___parser_nodes___ASuperclass___n_type(fra.me.REG[2])(fra.me.REG[2]);
   CALL_syntax___syntax_base___AType___check_conform(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
@@ -5158,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 = 828;
+  fra.me.line = 850;
   fra.me.meth = LOCATE_syntax___mmbuilder___APropdef___process_and_check;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  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;
@@ -5171,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:836 */
+  /* syntax/mmbuilder.nit:858 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[3])(fra.me.REG[3]);
   REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[2]));
@@ -5181,10 +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:837 */
+    /* syntax/mmbuilder.nit:859 */
     CALL_syntax___mmbuilder___APropdef___do_and_check_intro(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, REGB1);
   } else {
-    /* ./syntax//mmbuilder.nit:839 */
+    /* syntax/mmbuilder.nit:861 */
     CALL_syntax___mmbuilder___APropdef___do_and_check_redef(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, REGB1);
   }
   stack_frame_head = fra.me.prev;
@@ -5196,6 +5594,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
   val_t REGB1;
   val_t REGB2;
   val_t REGB3;
+  val_t REGB4;
   val_t tmp;
     static val_t once_value_1; /* Once value */
     static val_t once_value_2; /* Once value */
@@ -5218,10 +5617,11 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         static val_t once_value_19; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 843;
+  fra.me.line = 865;
   fra.me.meth = LOCATE_syntax___mmbuilder___APropdef___do_and_check_intro;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
+  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;
@@ -5234,29 +5634,34 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
   fra.me.REG[2] = p2;
   REGB0 = p3;
   REGB1 = p4;
-  /* ./syntax//mmbuilder.nit:846 */
+  /* syntax/mmbuilder.nit:868 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:847 */
+  /* syntax/mmbuilder.nit:869 */
   fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:848 */
+  /* syntax/mmbuilder.nit:870 */
   fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
   REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalClass___visibility_level(fra.me.REG[5])(fra.me.REG[5]);
   REGB3 = TAG_Int(3);
-  /* ./../lib/standard//kernel.nit:216 */
+  REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB4)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ../lib/standard/kernel.nit:233 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-  /* ./syntax//mmbuilder.nit:848 */
+  /* syntax/mmbuilder.nit:870 */
   if (UNTAG_Bool(REGB3)) {
-    /* ./syntax//mmbuilder.nit:850 */
+    /* syntax/mmbuilder.nit:872 */
     REGB3 = TAG_Int(3);
     REGB1 = REGB3;
   }
-  /* ./syntax//mmbuilder.nit:852 */
+  /* syntax/mmbuilder.nit:874 */
   CALL_metamodel___abstractmetamodel___MMGlobalProperty___visibility_level__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
-  /* ./syntax//mmbuilder.nit:853 */
+  /* syntax/mmbuilder.nit:875 */
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:854 */
+    /* syntax/mmbuilder.nit:876 */
     REGB0 = TAG_Int(5);
     fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -5294,13 +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:856 */
+  /* syntax/mmbuilder.nit:878 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_attribute(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:857 */
+    /* syntax/mmbuilder.nit:879 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[4])(fra.me.REG[4]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:858 */
+      /* syntax/mmbuilder.nit:880 */
       REGB0 = TAG_Int(5);
       fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_4) {
@@ -5338,10 +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:859 */
+      /* syntax/mmbuilder.nit:881 */
       REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[4])(fra.me.REG[4]);
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:860 */
+        /* syntax/mmbuilder.nit:882 */
         REGB0 = TAG_Int(5);
         fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
         if (!once_value_7) {
@@ -5379,10 +5784,10 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
         CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
       } else {
-        /* ./syntax//mmbuilder.nit:861 */
+        /* syntax/mmbuilder.nit:883 */
         REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[4])(fra.me.REG[4]);
         if (UNTAG_Bool(REGB0)) {
-          /* ./syntax//mmbuilder.nit:862 */
+          /* syntax/mmbuilder.nit:884 */
           REGB0 = TAG_Int(5);
           fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
           if (!once_value_10) {
@@ -5423,13 +5828,13 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
       }
     }
   } else {
-    /* ./syntax//mmbuilder.nit:864 */
+    /* syntax/mmbuilder.nit:886 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:865 */
+      /* syntax/mmbuilder.nit:887 */
       REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[4])(fra.me.REG[4]);
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:866 */
+        /* syntax/mmbuilder.nit:888 */
         REGB0 = TAG_Int(5);
         fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
         if (!once_value_13) {
@@ -5467,10 +5872,10 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
         CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
       } else {
-        /* ./syntax//mmbuilder.nit:867 */
+        /* syntax/mmbuilder.nit:889 */
         REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[4])(fra.me.REG[4]);
         if (UNTAG_Bool(REGB0)) {
-          /* ./syntax//mmbuilder.nit:868 */
+          /* syntax/mmbuilder.nit:890 */
           REGB0 = TAG_Int(5);
           fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
           if (!once_value_16) {
@@ -5511,7 +5916,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
       }
     }
   }
-  /* ./syntax//mmbuilder.nit:873 */
+  /* syntax/mmbuilder.nit:895 */
   fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -5526,17 +5931,17 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:874 */
+    /* syntax/mmbuilder.nit:896 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:875 */
+      /* syntax/mmbuilder.nit:897 */
       fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-      /* ./syntax//mmbuilder.nit:876 */
+      /* syntax/mmbuilder.nit:898 */
       CALL_syntax___mmbuilder___APropdef___inherit_signature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
     }
-    /* ./syntax//mmbuilder.nit:878 */
+    /* syntax/mmbuilder.nit:900 */
     fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -5560,13 +5965,13 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
     }
     if (UNTAG_Bool(REGB0)) {
     } else {
-      /* ./syntax//mmbuilder.nit:880 */
+      /* syntax/mmbuilder.nit:902 */
       fra.me.REG[4] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[4] = CALL_syntax___mmbuilder___SignatureBuilder___untyped_params(fra.me.REG[4])(fra.me.REG[4]);
       REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[4])(fra.me.REG[4]);
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:881 */
+        /* syntax/mmbuilder.nit:903 */
         fra.me.REG[4] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[4] = CALL_syntax___mmbuilder___SignatureBuilder___untyped_params(fra.me.REG[4])(fra.me.REG[4]);
         fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
@@ -5580,64 +5985,69 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         fra.me.REG[0] = fra.me.REG[0];
         CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
       } else {
-        /* ./syntax//mmbuilder.nit:883 */
+        /* syntax/mmbuilder.nit:905 */
         fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
         fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[4] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[4])(fra.me.REG[4]);
         fra.me.REG[4] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[0], NIT_NULL, fra.me.REG[4]);
         CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-        /* ./syntax//mmbuilder.nit:884 */
+        /* syntax/mmbuilder.nit:906 */
         fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[1] = CALL_syntax___mmbuilder___SignatureBuilder___closure_decls(fra.me.REG[1])(fra.me.REG[1]);
-        /* ./../lib/standard//collection//array.nit:234 */
+        /* ../lib/standard/collection/array.nit:269 */
         REGB0 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:235 */
+        /* ../lib/standard/collection/array.nit:270 */
         REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-        /* ./../lib/standard//collection//array.nit:236 */
+        /* ../lib/standard/collection/array.nit:271 */
         fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ../lib/standard/collection/array.nit:272 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ../lib/standard/collection/array.nit:24 */
           REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
           REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-          /* ./../lib/standard//kernel.nit:215 */
+          REGB3 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB3)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ../lib/standard/kernel.nit:232 */
           REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ../lib/standard/collection/array.nit:272 */
           if (UNTAG_Bool(REGB1)) {
-            /* ./../lib/standard//collection//array.nit:238 */
+            /* ../lib/standard/collection/array.nit:273 */
             REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ../lib/standard/collection/array.nit:718 */
             fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-            /* ./syntax//mmbuilder.nit:885 */
+            /* syntax/mmbuilder.nit:907 */
             fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
             REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 885);
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 907);
             }
             fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
             fra.me.REG[0] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[0])(fra.me.REG[0]);
             fra.me.REG[0] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[0])(fra.me.REG[0]);
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB1 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ../lib/standard/kernel.nit:235 */
             REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB0 = REGB1;
           } else {
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ../lib/standard/collection/array.nit:272 */
             goto label20;
           }
         }
@@ -5658,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 = 891;
+  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;
@@ -5677,49 +6088,54 @@ void syntax___mmbuilder___APropdef___inherit_signature(val_t p0, val_t p1, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./syntax//mmbuilder.nit:893 */
+  /* syntax/mmbuilder.nit:915 */
   fra.me.REG[0] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:895 */
+      /* syntax/mmbuilder.nit:917 */
       fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[5])(fra.me.REG[5]);
       fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[6] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[6])(fra.me.REG[6]);
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 895);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 917);
       }
       fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___adaptation_to(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-      /* ./syntax//mmbuilder.nit:897 */
+      /* syntax/mmbuilder.nit:919 */
       REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
@@ -5733,114 +6149,119 @@ void syntax___mmbuilder___APropdef___inherit_signature(val_t p0, val_t p1, val_t
         }
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:898 */
+        /* syntax/mmbuilder.nit:920 */
         fra.me.REG[5] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[5] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[5])(fra.me.REG[5]);
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ../lib/standard/collection/array.nit:24 */
         REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-        /* ./syntax//mmbuilder.nit:898 */
+        /* syntax/mmbuilder.nit:920 */
         REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[6])(fra.me.REG[6]);
         REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
         if (UNTAG_Bool(REGB3)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ../lib/standard/kernel.nit:227 */
           REGB2 = TAG_Bool((REGB1)==(REGB2));
-          /* ./syntax//mmbuilder.nit:898 */
+          /* syntax/mmbuilder.nit:920 */
           REGB3 = REGB2;
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* ./syntax//mmbuilder.nit:899 */
+          /* syntax/mmbuilder.nit:921 */
           goto label1;
         }
-        /* ./syntax//mmbuilder.nit:901 */
+        /* syntax/mmbuilder.nit:923 */
         fra.me.REG[5] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[5] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[5])(fra.me.REG[5]);
-        /* ./../lib/standard//collection//array.nit:234 */
+        /* ../lib/standard/collection/array.nit:269 */
         REGB3 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:235 */
+        /* ../lib/standard/collection/array.nit:270 */
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-        /* ./../lib/standard//collection//array.nit:236 */
+        /* ../lib/standard/collection/array.nit:271 */
         fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ../lib/standard/collection/array.nit:272 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ../lib/standard/collection/array.nit:24 */
           REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
           REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-          /* ./../lib/standard//kernel.nit:215 */
+          REGB1 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB1)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ../lib/standard/kernel.nit:232 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ../lib/standard/collection/array.nit:272 */
           if (UNTAG_Bool(REGB2)) {
-            /* ./../lib/standard//collection//array.nit:238 */
+            /* ../lib/standard/collection/array.nit:273 */
             REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
             if (UNTAG_Bool(REGB2)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ../lib/standard/collection/array.nit:718 */
             fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB3)];
-            /* ./syntax//mmbuilder.nit:902 */
+            /* syntax/mmbuilder.nit:924 */
             REGB2 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[8])(fra.me.REG[8]);
             fra.me.REG[9] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[6])(fra.me.REG[6], REGB2);
-            /* ./syntax//mmbuilder.nit:903 */
+            /* syntax/mmbuilder.nit:925 */
             CALL_syntax___mmbuilder___AParam___stype__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
-            /* ./syntax//mmbuilder.nit:904 */
+            /* syntax/mmbuilder.nit:926 */
             REGB2 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[8])(fra.me.REG[8]);
             REGB1 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[6])(fra.me.REG[6]);
             REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
             if (UNTAG_Bool(REGB4)) {
             } else {
-              /* ./../lib/standard//kernel.nit:210 */
+              /* ../lib/standard/kernel.nit:227 */
               REGB1 = TAG_Bool((REGB2)==(REGB1));
-              /* ./syntax//mmbuilder.nit:904 */
+              /* syntax/mmbuilder.nit:926 */
               REGB4 = REGB1;
             }
             if (UNTAG_Bool(REGB4)) {
-              /* ./syntax//mmbuilder.nit:905 */
+              /* syntax/mmbuilder.nit:927 */
               fra.me.REG[10] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9]);
               fra.me.REG[9] = fra.me.REG[10];
             }
-            /* ./syntax//mmbuilder.nit:907 */
+            /* syntax/mmbuilder.nit:929 */
             fra.me.REG[8] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[8])(fra.me.REG[8]);
             CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB4 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ../lib/standard/kernel.nit:235 */
             REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB4));
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB3 = REGB4;
           } else {
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ../lib/standard/collection/array.nit:272 */
             goto label2;
           }
         }
         label2: while(0);
-        /* ./syntax//mmbuilder.nit:910 */
+        /* syntax/mmbuilder.nit:932 */
         fra.me.REG[0] = fra.me.REG[6];
-        /* ./syntax//mmbuilder.nit:911 */
+        /* syntax/mmbuilder.nit:933 */
         CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB3;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label3;
     }
   }
@@ -5881,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 = 916;
+  fra.me.line = 938;
   fra.me.meth = LOCATE_syntax___mmbuilder___APropdef___do_and_check_redef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
+  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;
@@ -5946,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:919 */
+  /* syntax/mmbuilder.nit:941 */
   REGB2 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AInitPropdef, ID_parser___parser_nodes___AInitPropdef)) /*cast AInitPropdef*/;
-  /* ./syntax//mmbuilder.nit:920 */
+  /* syntax/mmbuilder.nit:942 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:922 */
+  /* syntax/mmbuilder.nit:944 */
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:923 */
+    /* syntax/mmbuilder.nit:945 */
     REGB0 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -5990,10 +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:924 */
+    /* syntax/mmbuilder.nit:946 */
     goto label4;
   }
-  /* ./syntax//mmbuilder.nit:926 */
+  /* syntax/mmbuilder.nit:948 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB2));
@@ -6002,7 +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:927 */
+    /* syntax/mmbuilder.nit:949 */
     REGB0 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_5) {
@@ -6040,7 +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:928 */
+    /* syntax/mmbuilder.nit:950 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
@@ -6049,7 +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:929 */
+      /* syntax/mmbuilder.nit:951 */
       REGB2 = TAG_Int(5);
       fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
       if (!once_value_8) {
@@ -6088,49 +6510,54 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
       CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
     }
   }
-  /* ./syntax//mmbuilder.nit:932 */
+  /* syntax/mmbuilder.nit:954 */
   fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:934 */
+  /* syntax/mmbuilder.nit:956 */
   fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[5])(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB3 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB3)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:232 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB2)];
-      /* ./syntax//mmbuilder.nit:935 */
+      /* syntax/mmbuilder.nit:957 */
       fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[7])(fra.me.REG[7]);
       fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
-      /* ./syntax//mmbuilder.nit:936 */
+      /* syntax/mmbuilder.nit:958 */
       fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
-      /* ./syntax//mmbuilder.nit:937 */
+      /* syntax/mmbuilder.nit:959 */
       REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -6146,16 +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:938 */
+      /* syntax/mmbuilder.nit:960 */
       fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[8] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[8])(fra.me.REG[8]);
       REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 938);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 960);
       }
       fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___adaptation_to(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
       fra.me.REG[7] = fra.me.REG[8];
-      /* ./syntax//mmbuilder.nit:940 */
+      /* syntax/mmbuilder.nit:962 */
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -6169,33 +6596,33 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         }
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:942 */
+        /* syntax/mmbuilder.nit:964 */
         fra.me.REG[8] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[8] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[8])(fra.me.REG[8]);
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ../lib/standard/collection/array.nit:24 */
         REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-        /* ./syntax//mmbuilder.nit:942 */
+        /* syntax/mmbuilder.nit:964 */
         REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 942);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 964);
         }
         REGB3 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[7])(fra.me.REG[7]);
         REGB4 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB3));
         if (UNTAG_Bool(REGB4)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ../lib/standard/kernel.nit:227 */
           REGB3 = TAG_Bool((REGB0)==(REGB3));
-          /* ./syntax//mmbuilder.nit:942 */
+          /* syntax/mmbuilder.nit:964 */
           REGB4 = REGB3;
         }
         REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
         if (UNTAG_Bool(REGB4)) {
-          /* ./syntax//mmbuilder.nit:943 */
+          /* syntax/mmbuilder.nit:965 */
           REGB4 = TAG_Int(11);
           fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
           if (!once_value_12) {
@@ -6255,7 +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, 943);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 965);
           }
           REGB4 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[7])(fra.me.REG[7]);
           fra.me.REG[10] = CALL_standard___string___Object___to_s(REGB4)(REGB4);
@@ -6271,44 +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:944 */
+          /* syntax/mmbuilder.nit:966 */
           goto label4;
         }
-        /* ./syntax//mmbuilder.nit:946 */
+        /* syntax/mmbuilder.nit:968 */
         fra.me.REG[8] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[8] = CALL_syntax___mmbuilder___SignatureBuilder___closure_decls(fra.me.REG[8])(fra.me.REG[8]);
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ../lib/standard/collection/array.nit:24 */
         REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-        /* ./syntax//mmbuilder.nit:946 */
+        /* syntax/mmbuilder.nit:968 */
         REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 946);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 968);
         }
         fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[7])(fra.me.REG[7]);
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ../lib/standard/collection/array.nit:24 */
         REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-        /* ./syntax//mmbuilder.nit:946 */
+        /* syntax/mmbuilder.nit:968 */
         REGB0 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB3));
         if (UNTAG_Bool(REGB0)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ../lib/standard/kernel.nit:227 */
           REGB3 = TAG_Bool((REGB4)==(REGB3));
-          /* ./syntax//mmbuilder.nit:946 */
+          /* syntax/mmbuilder.nit:968 */
           REGB0 = REGB3;
         }
         REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
         if (UNTAG_Bool(REGB0)) {
-          /* ./syntax//mmbuilder.nit:947 */
+          /* syntax/mmbuilder.nit:969 */
           REGB0 = TAG_Int(11);
           fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
           if (!once_value_18) {
@@ -6368,7 +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, 947);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 969);
           }
           REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[7])(fra.me.REG[7]);
           fra.me.REG[10] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
@@ -6384,231 +6811,305 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
           fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
           CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
-          /* ./syntax//mmbuilder.nit:948 */
+          /* syntax/mmbuilder.nit:970 */
           goto label4;
         }
-        /* ./syntax//mmbuilder.nit:950 */
+        /* syntax/mmbuilder.nit:972 */
         fra.me.REG[8] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[8] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[8])(fra.me.REG[8]);
-        /* ./../lib/standard//collection//array.nit:234 */
+        /* ../lib/standard/collection/array.nit:269 */
         REGB0 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:235 */
+        /* ../lib/standard/collection/array.nit:270 */
         REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-        /* ./../lib/standard//collection//array.nit:236 */
+        /* ../lib/standard/collection/array.nit:271 */
         fra.me.REG[10] = ATTR_standard___collection___array___Array____items(fra.me.REG[8]);
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ../lib/standard/collection/array.nit:272 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ../lib/standard/collection/array.nit:24 */
           REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
           REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-          /* ./../lib/standard//kernel.nit:215 */
+          REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB4)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ../lib/standard/kernel.nit:232 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ../lib/standard/collection/array.nit:272 */
           if (UNTAG_Bool(REGB3)) {
-            /* ./../lib/standard//collection//array.nit:238 */
+            /* ../lib/standard/collection/array.nit:273 */
             REGB3 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
             if (UNTAG_Bool(REGB3)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ../lib/standard/collection/array.nit:718 */
             fra.me.REG[11] = ((Nit_NativeArray)fra.me.REG[10])->val[UNTAG_Int(REGB0)];
-            /* ./syntax//mmbuilder.nit:951 */
+            /* syntax/mmbuilder.nit:973 */
             REGB3 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[11])(fra.me.REG[11]);
             REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
             if (UNTAG_Bool(REGB4)) {
-              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 951);
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 973);
             }
             fra.me.REG[12] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[7])(fra.me.REG[7], REGB3);
-            /* ./syntax//mmbuilder.nit:952 */
+            /* syntax/mmbuilder.nit:974 */
             CALL_syntax___mmbuilder___AParam___stype__eq(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
-            /* ./syntax//mmbuilder.nit:953 */
+            /* syntax/mmbuilder.nit:975 */
             REGB3 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[11])(fra.me.REG[11]);
             REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
             if (UNTAG_Bool(REGB4)) {
-              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 953);
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 975);
             }
             REGB4 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[7])(fra.me.REG[7]);
             REGB5 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
             if (UNTAG_Bool(REGB5)) {
             } else {
-              /* ./../lib/standard//kernel.nit:210 */
+              /* ../lib/standard/kernel.nit:227 */
               REGB4 = TAG_Bool((REGB3)==(REGB4));
-              /* ./syntax//mmbuilder.nit:953 */
+              /* syntax/mmbuilder.nit:975 */
               REGB5 = REGB4;
             }
             if (UNTAG_Bool(REGB5)) {
-              /* ./syntax//mmbuilder.nit:954 */
+              /* syntax/mmbuilder.nit:976 */
               fra.me.REG[13] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[12]);
               fra.me.REG[12] = fra.me.REG[13];
             }
-            /* ./syntax//mmbuilder.nit:956 */
+            /* syntax/mmbuilder.nit:978 */
+            fra.me.REG[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:239 */
+            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:239 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB0 = REGB5;
           } else {
-            /* ./../lib/standard//collection//array.nit:237 */
-            goto label24;
+            /* ../lib/standard/collection/array.nit:272 */
+            goto label25;
           }
         }
-        label24: while(0);
-        /* ./syntax//mmbuilder.nit:958 */
+        label25: while(0);
+        /* syntax/mmbuilder.nit:982 */
         fra.me.REG[4] = fra.me.REG[7];
-        /* ./syntax//mmbuilder.nit:959 */
+        /* 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:963 */
+      /* 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:971 */
+      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, 971);
+        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, 971);
+        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:971 */
+        /* syntax/mmbuilder.nit:995 */
         REGB3 = REGB4;
       }
       REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
       if (UNTAG_Bool(REGB3)) {
-        /* ./syntax//mmbuilder.nit:972 */
+        /* 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, 972);
+          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:973 */
+        /* 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, 973);
+          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);
-        /* ./../lib/standard//kernel.nit:217 */
+        REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
+        if (UNTAG_Bool(REGB5)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ../lib/standard/kernel.nit:234 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB4));
-        /* ./syntax//mmbuilder.nit:973 */
+        /* syntax/mmbuilder.nit:997 */
         if (UNTAG_Bool(REGB4)) {
-          /* ./syntax//mmbuilder.nit:974 */
+          /* 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:976 */
+            /* 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, 976);
+              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) {
-              /* ./../lib/standard//kernel.nit:215 */
+              REGB5 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
+              if (UNTAG_Bool(REGB5)) {
+              } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+              }
+              /* ../lib/standard/kernel.nit:232 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB3));
-              /* ./../lib/standard//kernel.nit:335 */
+              /* ../lib/standard/kernel.nit:352 */
               if (UNTAG_Bool(REGB5)) {
-               /* ./syntax//mmbuilder.nit:976 */
+               /* syntax/mmbuilder.nit:1000 */
                REGB5 = REGB4;
-               /* ./syntax//mmbuilder.nit:977 */
+               /* 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, 977);
+               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, 977);
+               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]));
@@ -6619,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:978 */
+               /* 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, 978);
+               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___MapRead_____bra(fra.me.REG[8])(fra.me.REG[8], REGB5);
+               fra.me.REG[8] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[8])(fra.me.REG[8], REGB5);
                REGB6 = TAG_Int(7);
                fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB6);
-               if (!once_value_31) {
-               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, 978);
+               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:981 */
+            /* 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:983 */
+              /* 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, 983);
+               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, 983);
+               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]));
@@ -6717,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:984 */
+               /* 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, 984);
+               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:988 */
-              nit_abort("Aborted", NULL, LOCATE_syntax___mmbuilder, 988);
+              /* syntax/mmbuilder.nit:1012 */
+              nit_abort("Aborted", NULL, LOCATE_syntax___mmbuilder, 1012);
             }
           }
         }
       }
-      /* ./syntax//mmbuilder.nit:992 */
+      /* 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, 992);
+        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:993 */
+      /* 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, 993);
+        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:994 */
+      /* syntax/mmbuilder.nit:1018 */
       REGB4 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
       } else {
@@ -6824,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:995 */
+        /* 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:996 */
+        /* syntax/mmbuilder.nit:1020 */
         REGB4 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
         } else {
@@ -6917,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:997 */
+          /* 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:998 */
+          /* syntax/mmbuilder.nit:1022 */
           REGB4 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
           if (UNTAG_Bool(REGB4)) {
           } else {
@@ -7013,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, 998);
+              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));
@@ -7022,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:999 */
-            fra.me.REG[12] = NIT_NULL;
-            /* ./syntax//mmbuilder.nit:1000 */
+            /* 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:1001 */
-              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, 1001);
+               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:1002 */
+              /* 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:1003 */
-               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:1004 */
+               /* 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:1005 */
-               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:1007 */
+            /* 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:1008 */
+            /* 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, 1008);
+              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:1008 */
+               /* syntax/mmbuilder.nit:1032 */
                REGB3 = REGB4;
               }
             } else {
@@ -7124,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:1010 */
+              /* 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:1011 */
+              /* syntax/mmbuilder.nit:1035 */
               REGB3 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
               if (UNTAG_Bool(REGB3)) {
               } else {
@@ -7242,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:1013 */
+               /* 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]);
@@ -7295,27 +7796,27 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           }
         }
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = REGB3;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
-      goto label63;
+      /* ../lib/standard/collection/array.nit:272 */
+      goto label64;
     }
   }
-  label63: while(0);
+  label64: while(0);
   label11: while(0);
-  /* ./syntax//mmbuilder.nit:1017 */
+  /* 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:1017 */
+    /* syntax/mmbuilder.nit:1041 */
     REGB3 = REGB2;
   }
   REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
@@ -7324,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:1017 */
+      /* syntax/mmbuilder.nit:1041 */
       REGB2 = REGB1;
     }
     REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
@@ -7335,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:1018 */
+    /* 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:1020 */
+  /* 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);
@@ -7386,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 = 1025;
+  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:1025 */
+  /* 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];
@@ -7402,40 +7904,44 @@ val_t syntax___mmbuilder___AAttrPropdef___writemethod(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1026;
+  fra.me.line = 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:1026 */
+  /* 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];
 }
 val_t syntax___mmbuilder___AAttrPropdef___prop(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1028;
+  fra.me.line = 1052;
   fra.me.meth = LOCATE_syntax___mmbuilder___AAttrPropdef___prop;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
+  fra.me.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:1028 */
-  fra.me.REG[0] = ATTR_syntax___mmbuilder___AAttrPropdef____prop(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  /* syntax/mmbuilder.nit: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, 1028);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1052);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
@@ -7448,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 = 1030;
+  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;
@@ -7460,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:1030 */
+  /* syntax/mmbuilder.nit:1054 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1032 */
+  /* 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:1034 */
+  /* 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)) {
@@ -7481,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:1035 */
+    /* 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, 1035);
+      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:1037 */
+    /* syntax/mmbuilder.nit:1061 */
     if (!once_value_1) {
       fra.me.REG[0] = BOX_NativeString("@");
       REGB0 = TAG_Int(1);
@@ -7501,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, 1037);
+      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:1039 */
+  /* 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:1040 */
+  /* 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:1041 */
+  /* syntax/mmbuilder.nit:1065 */
   ATTR_syntax___mmbuilder___AAttrPropdef____prop(fra.me.REG[2]) = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:1042 */
+  /* 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:1044 */
+  /* 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)) {
@@ -7551,7 +8058,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1045 */
+    /* syntax/mmbuilder.nit: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)) {
@@ -7567,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:1046 */
+      /* 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, 1046);
+        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:1048 */
+      /* 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, 1048);
+        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:1050 */
+    /* 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:1051 */
+    /* syntax/mmbuilder.nit:1075 */
     ATTR_syntax___mmbuilder___AAttrPropdef____readmethod(fra.me.REG[2]) = fra.me.REG[0];
-    /* ./syntax//mmbuilder.nit:1052 */
+    /* 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:1054 */
+  /* 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)) {
@@ -7630,7 +8137,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1055 */
+    /* syntax/mmbuilder.nit: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)) {
@@ -7646,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:1056 */
+      /* 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, 1056);
+        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) {
@@ -7667,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:1058 */
+      /* 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, 1058);
+        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);
@@ -7686,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:1060 */
+    /* 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:1061 */
+    /* syntax/mmbuilder.nit:1085 */
     ATTR_syntax___mmbuilder___AAttrPropdef____writemethod(fra.me.REG[2]) = fra.me.REG[4];
-    /* ./syntax//mmbuilder.nit:1062 */
+    /* 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]);
   }
@@ -7698,7 +8205,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
   return;
 }
 void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
@@ -7711,145 +8218,190 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
       static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1066;
+  fra.me.line = 1090;
   fra.me.meth = LOCATE_syntax___mmbuilder___AAttrPropdef___accept_property_verifier;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 7;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1066 */
+  /* syntax/mmbuilder.nit:1090 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1068 */
+  /* 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:1070 */
-  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:1071 */
-    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, 1071);
+      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:1072 */
-    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:1074 */
+    /* 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[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+    fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_2) {
-      fra.me.REG[4] = BOX_NativeString("Not yet implemented: Attribute definition ");
+      fra.me.REG[5] = BOX_NativeString("Not yet implemented: Attribute definition ");
       REGB0 = TAG_Int(42);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-      once_value_2 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
-    } else fra.me.REG[4] = once_value_2;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-    fra.me.REG[4] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
-    fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
-    fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
+    } else fra.me.REG[5] = once_value_2;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+    fra.me.REG[5] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
+    fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     if (!once_value_3) {
-      fra.me.REG[4] = BOX_NativeString("::");
+      fra.me.REG[5] = BOX_NativeString("::");
       REGB0 = TAG_Int(2);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-      once_value_3 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      once_value_3 = fra.me.REG[5];
       register_static_object(&once_value_3);
-    } else fra.me.REG[4] = once_value_3;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-    fra.me.REG[4] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
-    fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
+    } else fra.me.REG[5] = once_value_3;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+    fra.me.REG[5] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     if (!once_value_4) {
-      fra.me.REG[4] = BOX_NativeString(" requires an explicit type.");
+      fra.me.REG[5] = BOX_NativeString(" requires an explicit type.");
       REGB0 = TAG_Int(27);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-      once_value_4 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      once_value_4 = fra.me.REG[5];
       register_static_object(&once_value_4);
-    } else fra.me.REG[4] = once_value_4;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-    fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
-    CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[0]);
-    /* ./syntax//mmbuilder.nit:1075 */
+    } else fra.me.REG[5] = once_value_4;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+    fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+    CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
+    /* syntax/mmbuilder.nit:1103 */
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:1078 */
-  fra.me.REG[0] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1079 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[5])(fra.me.REG[5]);
-  fra.me.REG[5] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[4], fra.me.REG[1], fra.me.REG[5]);
-  /* ./syntax//mmbuilder.nit:1080 */
-  CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
-  /* ./syntax//mmbuilder.nit:1081 */
-  fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
-  REGB0 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:1082 */
-  fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
-  REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  /* syntax/mmbuilder.nit:1106 */
+  fra.me.REG[4] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
+  /* 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:1108 */
+  CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+  /* 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: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)) {
   } else {
-    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
       REGB1 = REGB2;
     }
   }
   REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
   if (UNTAG_Bool(REGB1)) {
-    fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
-    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(false);
         REGB1 = REGB2;
       } else {
-        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
         REGB1 = REGB2;
       }
     }
@@ -7858,18 +8410,18 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
     REGB2 = TAG_Bool(false);
     REGB1 = REGB2;
   }
-  CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0], REGB1, REGB0);
-  /* ./syntax//mmbuilder.nit:1083 */
-  fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_readable(fra.me.REG[2])(fra.me.REG[2]);
-  REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+  CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], REGB1, REGB0);
+  /* syntax/mmbuilder.nit: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)) {
   } else {
-    REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
       REGB1 = REGB2;
     }
   }
@@ -7877,62 +8429,62 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(true);
   } else {
-    fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
-    REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
+    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      REGB3 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+      REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Bool(false);
         REGB2 = REGB3;
       } else {
-        REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+        REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
         REGB2 = REGB3;
       }
     }
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
-    /* ./syntax//mmbuilder.nit:1084 */
-    fra.me.REG[0] = ATTR_syntax___mmbuilder___AAttrPropdef____readmethod(fra.me.REG[2]);
-    REGB1 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+    /* syntax/mmbuilder.nit: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, 1084);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1112);
     }
-    /* ./syntax//mmbuilder.nit:1085 */
-    CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
-    /* ./syntax//mmbuilder.nit:1086 */
-    fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_readable(fra.me.REG[2])(fra.me.REG[2]);
-    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    /* syntax/mmbuilder.nit:1113 */
+    CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+    /* 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)) {
     } else {
-      REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+      REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(false);
         REGB1 = REGB2;
       } else {
-        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
         REGB1 = REGB2;
       }
     }
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
     if (UNTAG_Bool(REGB1)) {
-      fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_readable(fra.me.REG[2])(fra.me.REG[2]);
-      REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+      fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_readable(fra.me.REG[2])(fra.me.REG[2]);
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1086);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1114);
       }
-      fra.me.REG[5] = CALL_parser___parser_nodes___AAble___n_kwredef(fra.me.REG[5])(fra.me.REG[5]);
-      REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+      fra.me.REG[6] = CALL_parser___parser_nodes___AAble___n_kwredef(fra.me.REG[6])(fra.me.REG[6]);
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+        REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
           REGB2 = TAG_Bool(false);
           REGB1 = REGB2;
         } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
           REGB1 = REGB2;
         }
       }
@@ -7944,30 +8496,30 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(true);
     } else {
-      fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
-      REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+      fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
+      REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+        REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
           REGB3 = TAG_Bool(false);
           REGB2 = REGB3;
         } else {
-          REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+          REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
           REGB2 = REGB3;
         }
       }
       if (UNTAG_Bool(REGB2)) {
-        fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
-        REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+        fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
+        REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+          REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
             REGB3 = TAG_Bool(false);
             REGB2 = REGB3;
           } else {
-            REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+            REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
             REGB2 = REGB3;
           }
         }
@@ -7978,26 +8530,42 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
       }
       REGB1 = REGB2;
     }
-    CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0], REGB1, REGB0);
-    /* ./syntax//mmbuilder.nit:1087 */
-    fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[2])(fra.me.REG[2]);
-    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], REGB1, REGB0);
+    /* syntax/mmbuilder.nit: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)) {
+    } 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)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1087);
+      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[5])(fra.me.REG[5], fra.me.REG[3], fra.me.REG[0]);
   }
-  /* ./syntax//mmbuilder.nit:1089 */
-  fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
-  REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+  /* syntax/mmbuilder.nit: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)) {
   } else {
-    REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
       REGB1 = REGB2;
     }
   }
@@ -8005,79 +8573,79 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(true);
   } else {
-    fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
-    REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
+    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      REGB3 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+      REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Bool(false);
         REGB2 = REGB3;
       } else {
-        REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+        REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
         REGB2 = REGB3;
       }
     }
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
-    /* ./syntax//mmbuilder.nit:1090 */
-    fra.me.REG[0] = ATTR_syntax___mmbuilder___AAttrPropdef____writemethod(fra.me.REG[2]);
-    REGB1 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+    /* syntax/mmbuilder.nit: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, 1090);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1118);
     }
-    /* ./syntax//mmbuilder.nit:1091 */
+    /* syntax/mmbuilder.nit:1119 */
     REGB1 = TAG_Int(0);
-    fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+    fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
     if (!once_value_5) {
       if (!once_value_6) {
-        fra.me.REG[4] = BOX_NativeString("value");
+        fra.me.REG[6] = BOX_NativeString("value");
         REGB1 = TAG_Int(5);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-        once_value_6 = fra.me.REG[4];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        once_value_6 = fra.me.REG[6];
         register_static_object(&once_value_6);
-      } else fra.me.REG[4] = once_value_6;
-      fra.me.REG[4] = fra.me.REG[4];
-      fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
-      once_value_5 = fra.me.REG[4];
+      } else fra.me.REG[6] = once_value_6;
+      fra.me.REG[6] = fra.me.REG[6];
+      fra.me.REG[6] = CALL_standard___symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
+      once_value_5 = fra.me.REG[6];
       register_static_object(&once_value_5);
-    } else fra.me.REG[4] = once_value_5;
-    fra.me.REG[4] = fra.me.REG[4];
-    fra.me.REG[4] = NEW_MMParam_metamodel___static_type___MMParam___init(fra.me.REG[1], fra.me.REG[4]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-    fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_items(fra.me.REG[5]);
-    fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
-    fra.me.REG[4] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[4])(fra.me.REG[4]);
-    fra.me.REG[4] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[5], NIT_NULL, fra.me.REG[4]);
-    CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-    /* ./syntax//mmbuilder.nit:1093 */
-    fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
-    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    } else fra.me.REG[6] = once_value_5;
+    fra.me.REG[6] = fra.me.REG[6];
+    fra.me.REG[6] = NEW_MMParam_metamodel___static_type___MMParam___init(fra.me.REG[1], fra.me.REG[6]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
+    fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_items(fra.me.REG[0]);
+    fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
+    fra.me.REG[6] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[6])(fra.me.REG[6]);
+    fra.me.REG[6] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[0], NIT_NULL, fra.me.REG[6]);
+    CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+    /* syntax/mmbuilder.nit: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)) {
     } else {
-      REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(false);
         REGB1 = REGB2;
       } else {
-        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
         REGB1 = REGB2;
       }
     }
     if (UNTAG_Bool(REGB1)) {
-      /* ./syntax//mmbuilder.nit:1094 */
-      fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
-      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      /* syntax/mmbuilder.nit: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)) {
       } else {
-        REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
           REGB2 = TAG_Bool(false);
           REGB1 = REGB2;
         } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
           REGB1 = REGB2;
         }
       }
@@ -8085,51 +8653,51 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
         REGB1 = TAG_Int(3);
         REGB0 = REGB1;
       } else {
-        fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
-        REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
+        REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1094);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1122);
         }
-        fra.me.REG[4] = CALL_parser___parser_nodes___AAble___n_visibility(fra.me.REG[4])(fra.me.REG[4]);
-        REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        fra.me.REG[6] = CALL_parser___parser_nodes___AAble___n_visibility(fra.me.REG[6])(fra.me.REG[6]);
+        REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1094);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1122);
         }
-        REGB1 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[4])(fra.me.REG[4]);
+        REGB1 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[6])(fra.me.REG[6]);
         REGB0 = REGB1;
       }
     }
-    /* ./syntax//mmbuilder.nit:1096 */
-    fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
-    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    /* syntax/mmbuilder.nit: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)) {
     } else {
-      REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(false);
         REGB1 = REGB2;
       } else {
-        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
         REGB1 = REGB2;
       }
     }
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
     if (UNTAG_Bool(REGB1)) {
-      fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
-      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1096);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1124);
       }
-      fra.me.REG[4] = CALL_parser___parser_nodes___AAble___n_kwredef(fra.me.REG[4])(fra.me.REG[4]);
-      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      fra.me.REG[6] = CALL_parser___parser_nodes___AAble___n_kwredef(fra.me.REG[6])(fra.me.REG[6]);
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
           REGB2 = TAG_Bool(false);
           REGB1 = REGB2;
         } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
           REGB1 = REGB2;
         }
       }
@@ -8138,14 +8706,30 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     }
-    CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0], REGB1, REGB0);
-    /* ./syntax//mmbuilder.nit:1097 */
-    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);
+    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: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)) {
+    } 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)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1097);
+      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[0]);
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -8156,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 = 1101;
+  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:1101 */
+  /* syntax/mmbuilder.nit:1129 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1103 */
+  /* 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:1104 */
+  /* 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:1105 */
+  /* 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;
@@ -8184,40 +8769,44 @@ val_t syntax___mmbuilder___AMethPropdef___name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1110;
+  fra.me.line = 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:1110 */
+  /* 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];
 }
 val_t syntax___mmbuilder___AMethPropdef___method(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1114;
+  fra.me.line = 1142;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMethPropdef___method;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
+  fra.me.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:1114 */
-  fra.me.REG[0] = ATTR_syntax___mmbuilder___AMethPropdef____method(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  /* syntax/mmbuilder.nit: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, 1114);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1142);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
@@ -8235,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 = 1116;
+  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;
@@ -8246,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:1116 */
+  /* syntax/mmbuilder.nit:1144 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1118 */
+  /* 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:1120 */
+  /* 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)) {
@@ -8266,10 +8856,10 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1121 */
+    /* 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:1122 */
+      /* syntax/mmbuilder.nit:1150 */
       if (!once_value_1) {
         if (!once_value_2) {
           fra.me.REG[1] = BOX_NativeString("init");
@@ -8285,101 +8875,101 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
       } else fra.me.REG[1] = once_value_1;
       fra.me.REG[1] = fra.me.REG[1];
     } else {
-      /* ./syntax//mmbuilder.nit:1124 */
+      /* syntax/mmbuilder.nit:1152 */
       if (!once_value_3) {
         if (!once_value_4) {
-          fra.me.REG[0] = BOX_NativeString("main");
+          fra.me.REG[4] = BOX_NativeString("main");
           REGB0 = TAG_Int(4);
-          fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
-          once_value_4 = fra.me.REG[0];
+          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+          once_value_4 = fra.me.REG[4];
           register_static_object(&once_value_4);
-        } else fra.me.REG[0] = once_value_4;
-        fra.me.REG[0] = fra.me.REG[0];
-        fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
-        once_value_3 = fra.me.REG[0];
+        } else fra.me.REG[4] = once_value_4;
+        fra.me.REG[4] = fra.me.REG[4];
+        fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
+        once_value_3 = fra.me.REG[4];
         register_static_object(&once_value_3);
-      } else fra.me.REG[0] = once_value_3;
-      fra.me.REG[0] = fra.me.REG[0];
-      fra.me.REG[1] = fra.me.REG[0];
+      } else fra.me.REG[4] = once_value_3;
+      fra.me.REG[4] = fra.me.REG[4];
+      fra.me.REG[1] = fra.me.REG[4];
     }
   } else {
-    /* ./syntax//mmbuilder.nit:1127 */
-    fra.me.REG[0] = CALL_parser___parser_nodes___AMethPropdef___n_methid(fra.me.REG[2])(fra.me.REG[2]);
-    REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    /* syntax/mmbuilder.nit: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, 1127);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1155);
     }
-    fra.me.REG[0] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+    fra.me.REG[4] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[4])(fra.me.REG[4]);
+    REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1127);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1155);
     }
-    fra.me.REG[1] = fra.me.REG[0];
-    /* ./syntax//mmbuilder.nit:1129 */
-    fra.me.REG[0] = CALL_parser___parser_nodes___AMethPropdef___n_methid(fra.me.REG[2])(fra.me.REG[2]);
-    REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    fra.me.REG[1] = fra.me.REG[4];
+    /* syntax/mmbuilder.nit: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, 1129);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1157);
     }
-    fra.me.REG[0] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[4] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[4])(fra.me.REG[4]);
     if (!once_value_5) {
       if (!once_value_6) {
-        fra.me.REG[4] = BOX_NativeString("-");
+        fra.me.REG[0] = BOX_NativeString("-");
         REGB0 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-        once_value_6 = fra.me.REG[4];
+        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        once_value_6 = fra.me.REG[0];
         register_static_object(&once_value_6);
-      } else fra.me.REG[4] = once_value_6;
-      fra.me.REG[4] = fra.me.REG[4];
-      fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
-      once_value_5 = fra.me.REG[4];
+      } else fra.me.REG[0] = once_value_6;
+      fra.me.REG[0] = fra.me.REG[0];
+      fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
+      once_value_5 = fra.me.REG[0];
       register_static_object(&once_value_5);
-    } else fra.me.REG[4] = once_value_5;
-    fra.me.REG[4] = fra.me.REG[4];
-    REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[4],fra.me.REG[0]));
+    } else fra.me.REG[0] = once_value_5;
+    fra.me.REG[0] = fra.me.REG[0];
+    REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[4]));
     if (UNTAG_Bool(REGB0)) {
     } else {
-      REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(false);
         REGB0 = REGB1;
       } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
         REGB0 = REGB1;
       }
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:1130 */
-      fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[2])(fra.me.REG[2]);
-      /* ./syntax//mmbuilder.nit:1131 */
-      REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      /* syntax/mmbuilder.nit:1158 */
+      fra.me.REG[0] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[2])(fra.me.REG[2]);
+      /* syntax/mmbuilder.nit:1159 */
+      REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
           REGB1 = TAG_Bool(false);
           REGB0 = REGB1;
         } else {
-          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
           REGB0 = REGB1;
         }
       }
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
-        REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1131);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1159);
         }
-        fra.me.REG[4] = CALL_parser___parser_nodes___ASignature___n_params(fra.me.REG[4])(fra.me.REG[4]);
-        REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
+        fra.me.REG[0] = CALL_parser___parser_nodes___ASignature___n_params(fra.me.REG[0])(fra.me.REG[0]);
+        REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
         REGB1 = TAG_Int(0);
         REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
         if (UNTAG_Bool(REGB2)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ../lib/standard/kernel.nit:227 */
           REGB1 = TAG_Bool((REGB0)==(REGB1));
-          /* ./syntax//mmbuilder.nit:1131 */
+          /* syntax/mmbuilder.nit:1159 */
           REGB2 = REGB1;
         }
       } else {
@@ -8387,35 +8977,35 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
         REGB2 = REGB1;
       }
       if (UNTAG_Bool(REGB2)) {
-        /* ./syntax//mmbuilder.nit:1132 */
+        /* syntax/mmbuilder.nit:1160 */
         if (!once_value_7) {
           if (!once_value_8) {
-            fra.me.REG[4] = BOX_NativeString("unary -");
+            fra.me.REG[0] = BOX_NativeString("unary -");
             REGB2 = TAG_Int(7);
-            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-            once_value_8 = fra.me.REG[4];
+            fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB2);
+            once_value_8 = fra.me.REG[0];
             register_static_object(&once_value_8);
-          } else fra.me.REG[4] = once_value_8;
-          fra.me.REG[4] = fra.me.REG[4];
-          fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
-          once_value_7 = fra.me.REG[4];
+          } else fra.me.REG[0] = once_value_8;
+          fra.me.REG[0] = fra.me.REG[0];
+          fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
+          once_value_7 = fra.me.REG[0];
           register_static_object(&once_value_7);
-        } else fra.me.REG[4] = once_value_7;
-        fra.me.REG[4] = fra.me.REG[4];
-        fra.me.REG[1] = fra.me.REG[4];
+        } else fra.me.REG[0] = once_value_7;
+        fra.me.REG[0] = fra.me.REG[0];
+        fra.me.REG[1] = fra.me.REG[0];
       }
     }
   }
-  /* ./syntax//mmbuilder.nit:1136 */
+  /* syntax/mmbuilder.nit:1164 */
   ATTR_syntax___mmbuilder___AMethPropdef____name(fra.me.REG[2]) = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1137 */
-  fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[4] = NEW_MMMethSrcMethod_syntax___syntax_base___MMMethSrcMethod___init(fra.me.REG[1], fra.me.REG[4], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1138 */
-  ATTR_syntax___mmbuilder___AMethPropdef____method(fra.me.REG[2]) = fra.me.REG[4];
-  /* ./syntax//mmbuilder.nit:1139 */
+  /* syntax/mmbuilder.nit: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:1166 */
+  ATTR_syntax___mmbuilder___AMethPropdef____method(fra.me.REG[2]) = fra.me.REG[0];
+  /* 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[4]);
+  CALL_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -8424,13 +9014,15 @@ void syntax___mmbuilder___AMethPropdef___accept_property_verifier(val_t p0, val_
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
+  val_t REGB3;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1142;
+  fra.me.line = 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;
@@ -8438,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:1142 */
+  /* syntax/mmbuilder.nit:1170 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1144 */
+  /* 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:1145 */
+  /* 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:1147 */
+  /* 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:1149 */
+  /* 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);
@@ -8469,61 +9061,66 @@ void syntax___mmbuilder___AMethPropdef___accept_property_verifier(val_t p0, val_
   }
   if (UNTAG_Bool(REGB0)) {
   } else {
-    /* ./syntax//mmbuilder.nit:1152 */
+    /* 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[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
-    fra.me.REG[0] = CALL_syntax___mmbuilder___SignatureBuilder___signature(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+    fra.me.REG[4] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
+    fra.me.REG[4] = CALL_syntax___mmbuilder___SignatureBuilder___signature(fra.me.REG[4])(fra.me.REG[4]);
+    REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1152);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1180);
     }
-    CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   }
-  /* ./syntax//mmbuilder.nit:1154 */
+  /* syntax/mmbuilder.nit:1182 */
   REGB0 = TAG_Int(1);
-  /* ./syntax//mmbuilder.nit:1155 */
-  fra.me.REG[0] = CALL_parser___parser_nodes___AMethPropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
-  REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+  /* syntax/mmbuilder.nit: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)) {
   } else {
-    REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
       REGB1 = REGB2;
     }
   }
   REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
   if (UNTAG_Bool(REGB1)) {
-    fra.me.REG[0] = CALL_parser___parser_nodes___AMethPropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
-    REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1155);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1183);
     }
-    REGB1 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[0])(fra.me.REG[0]);
+    REGB1 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[4])(fra.me.REG[4]);
     REGB2 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:217 */
+    REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB3)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:234 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
   } else {
-    /* ./syntax//mmbuilder.nit:1155 */
+    /* syntax/mmbuilder.nit:1183 */
     REGB1 = TAG_Bool(false);
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:1156 */
-    fra.me.REG[0] = CALL_parser___parser_nodes___AMethPropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
-    REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    /* syntax/mmbuilder.nit: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, 1156);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1184);
     }
-    REGB2 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[0])(fra.me.REG[0]);
+    REGB2 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[4])(fra.me.REG[4]);
     REGB0 = REGB2;
   }
-  /* ./syntax//mmbuilder.nit:1158 */
-  fra.me.REG[0] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
+  /* syntax/mmbuilder.nit: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);
   if (UNTAG_Bool(REGB2)) {
@@ -8538,30 +9135,30 @@ void syntax___mmbuilder___AMethPropdef___accept_property_verifier(val_t p0, val_
     }
   }
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
-  CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0], REGB2, REGB0);
-  /* ./syntax//mmbuilder.nit:1159 */
-  fra.me.REG[0] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[2])(fra.me.REG[2]);
-  REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+  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: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)) {
   } else {
-    REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(false);
       REGB0 = REGB2;
     } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
       REGB0 = REGB2;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    fra.me.REG[0] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[2] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
-    REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1159);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1187);
     }
-    CALL_syntax___mmbuilder___ASignature___check_visibility(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
+    CALL_syntax___mmbuilder___ASignature___check_visibility(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3], fra.me.REG[2]);
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -8572,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 = 1162;
+  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:1162 */
+  /* syntax/mmbuilder.nit:1190 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1164 */
+  /* 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:1165 */
+  /* 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:1166 */
+  /* 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;
@@ -8600,919 +9198,163 @@ void syntax___mmbuilder___AMainMethPropdef___process_and_check(val_t p0, val_t p
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1171;
-  fra.me.meth = LOCATE_syntax___mmbuilder___AMainMethPropdef___process_and_check;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  fra.me.REG[2] = p2;
-  REGB0 = p3;
-  REGB1 = p4;
-  /* ./syntax//mmbuilder.nit:1173 */
-  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
-  CALL_metamodel___abstractmetamodel___MMGlobalProperty___visibility_level__eq(fra.me.REG[0])(fra.me.REG[0], REGB1);
-  /* ./syntax//mmbuilder.nit:1174 */
-  fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
-  fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[1] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[0], NIT_NULL, fra.me.REG[1]);
-  CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-void syntax___mmbuilder___AExternPropdef___accept_property_verifier(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1180;
-  fra.me.meth = LOCATE_syntax___mmbuilder___AExternPropdef___accept_property_verifier;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1180 */
-  fra.me.REG[2] = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:1182 */
-  CALL_SUPER_syntax___mmbuilder___AExternPropdef___accept_property_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1184 */
-  fra.me.REG[1] = CALL_parser___parser_nodes___AExternPropdef___n_extern(fra.me.REG[2])(fra.me.REG[2]);
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
-      REGB0 = REGB1;
-    }
-  }
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1185 */
-    fra.me.REG[1] = CALL_parser___parser_nodes___AExternPropdef___n_extern(fra.me.REG[2])(fra.me.REG[2]);
-    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1185);
-    }
-    fra.me.REG[1] = CALL_parser___lexer___Token___text(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./syntax//mmbuilder.nit:1186 */
-    REGB0 = TAG_Int(1);
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
-    }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-    /* ./syntax//mmbuilder.nit:1186 */
-    REGB2 = TAG_Int(2);
-    /* ./../lib/standard//kernel.nit:220 */
-    REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-    /* ./syntax//mmbuilder.nit:1186 */
-    fra.me.REG[0] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
-    fra.me.REG[1] = fra.me.REG[0];
-  } else {
-    /* ./syntax//mmbuilder.nit:1188 */
-    fra.me.REG[0] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
-    fra.me.REG[0] = CALL_syntax___mmbuilder___MMMethod___default_extern_name(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[1] = fra.me.REG[0];
-  }
-  /* ./syntax//mmbuilder.nit:1190 */
-  fra.me.REG[2] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
-  CALL_syntax___syntax_base___MMMethSrcMethod___extern_name__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-val_t syntax___mmbuilder___MMMethod___default_extern_name(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t tmp;
-  static val_t once_value_1; /* Once value */
-  static val_t once_value_2; /* Once value */
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1195;
-  fra.me.meth = LOCATE_syntax___mmbuilder___MMMethod___default_extern_name;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1197 */
-  REGB0 = TAG_Int(3);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_1) {
-    fra.me.REG[2] = BOX_NativeString("");
-    REGB0 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_1 = fra.me.REG[2];
-    register_static_object(&once_value_1);
-  } else fra.me.REG[2] = once_value_1;
-  fra.me.REG[2] = fra.me.REG[2];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_syntax___mmbuilder___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  if (!once_value_2) {
-    fra.me.REG[2] = BOX_NativeString("___impl");
-    REGB0 = TAG_Int(7);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_2 = fra.me.REG[2];
-    register_static_object(&once_value_2);
-  } else fra.me.REG[2] = once_value_2;
-  fra.me.REG[2] = fra.me.REG[2];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
-  goto label3;
-  label3: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-val_t syntax___mmbuilder___MMMethod___friendly_extern_name(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-    static val_t once_value_1; /* Once value */
-      static val_t once_value_2; /* Once value */
-      static val_t once_value_3; /* Once value */
-        static val_t once_value_4; /* Once value */
-        static val_t once_value_5; /* Once value */
-          static val_t once_value_6; /* Once value */
-          static val_t once_value_7; /* Once value */
-            static val_t once_value_8; /* Once value */
-            static val_t once_value_9; /* Once value */
-              static val_t once_value_10; /* Once value */
-              static val_t once_value_11; /* Once value */
-               static val_t once_value_12; /* Once value */
-               static val_t once_value_13; /* Once value */
-               static val_t once_value_14; /* Once value */
-               static val_t once_value_15; /* Once value */
-               static val_t once_value_16; /* Once value */
-               static val_t once_value_17; /* Once value */
-               static val_t once_value_18; /* Once value */
-               static val_t once_value_19; /* Once value */
-               static val_t once_value_20; /* Once value */
-               static val_t once_value_21; /* Once value */
-               static val_t once_value_22; /* Once value */
-               static val_t once_value_23; /* Once value */
-               static val_t once_value_24; /* Once value */
-               static val_t once_value_25; /* Once value */
-               static val_t once_value_26; /* Once value */
-               static val_t once_value_27; /* Once value */
-               static val_t once_value_28; /* Once value */
-               static val_t once_value_29; /* Once value */
-               static val_t once_value_30; /* Once value */
-               static val_t once_value_31; /* Once value */
-               static val_t once_value_32; /* Once value */
-               static val_t once_value_33; /* Once value */
-               static val_t once_value_34; /* Once value */
-    static val_t once_value_35; /* Once value */
-    static val_t once_value_36; /* Once value */
-    static val_t once_value_37; /* Once value */
-    static val_t once_value_39; /* Once value */
-      static val_t once_value_40; /* Once value */
-      static val_t once_value_41; /* Once value */
-      static val_t once_value_42; /* Once value */
-      static val_t once_value_43; /* Once value */
-      static val_t once_value_44; /* Once value */
-      static val_t once_value_45; /* Once value */
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1200;
-  fra.me.meth = LOCATE_syntax___mmbuilder___MMMethod___friendly_extern_name;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[4] = NIT_NULL;
-  fra.me.REG[5] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1204 */
-  REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1206 */
-    fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:1207 */
-    if (!once_value_1) {
-      fra.me.REG[3] = BOX_NativeString("+");
-      REGB0 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-      once_value_1 = fra.me.REG[3];
-      register_static_object(&once_value_1);
-    } else fra.me.REG[3] = once_value_1;
-    fra.me.REG[3] = fra.me.REG[3];
-    REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-      REGB0 = REGB1;
-    }
-    if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:1208 */
-      if (!once_value_2) {
-        fra.me.REG[3] = BOX_NativeString("_plus");
-        REGB0 = TAG_Int(5);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-        once_value_2 = fra.me.REG[3];
-        register_static_object(&once_value_2);
-      } else fra.me.REG[3] = once_value_2;
-      fra.me.REG[3] = fra.me.REG[3];
-    } else {
-      /* ./syntax//mmbuilder.nit:1209 */
-      if (!once_value_3) {
-        fra.me.REG[4] = BOX_NativeString("-");
-        REGB0 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-        once_value_3 = fra.me.REG[4];
-        register_static_object(&once_value_3);
-      } else fra.me.REG[4] = once_value_3;
-      fra.me.REG[4] = fra.me.REG[4];
-      REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-        REGB0 = REGB1;
-      }
-      if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:1210 */
-        if (!once_value_4) {
-          fra.me.REG[4] = BOX_NativeString("_minus");
-          REGB0 = TAG_Int(6);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-          once_value_4 = fra.me.REG[4];
-          register_static_object(&once_value_4);
-        } else fra.me.REG[4] = once_value_4;
-        fra.me.REG[4] = fra.me.REG[4];
-        fra.me.REG[3] = fra.me.REG[4];
-      } else {
-        /* ./syntax//mmbuilder.nit:1211 */
-        if (!once_value_5) {
-          fra.me.REG[4] = BOX_NativeString("*");
-          REGB0 = TAG_Int(1);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-          once_value_5 = fra.me.REG[4];
-          register_static_object(&once_value_5);
-        } else fra.me.REG[4] = once_value_5;
-        fra.me.REG[4] = fra.me.REG[4];
-        REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-        if (UNTAG_Bool(REGB0)) {
-        } else {
-          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-          REGB0 = REGB1;
-        }
-        if (UNTAG_Bool(REGB0)) {
-          /* ./syntax//mmbuilder.nit:1212 */
-          if (!once_value_6) {
-            fra.me.REG[4] = BOX_NativeString("_star");
-            REGB0 = TAG_Int(5);
-            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-            once_value_6 = fra.me.REG[4];
-            register_static_object(&once_value_6);
-          } else fra.me.REG[4] = once_value_6;
-          fra.me.REG[4] = fra.me.REG[4];
-          fra.me.REG[3] = fra.me.REG[4];
-        } else {
-          /* ./syntax//mmbuilder.nit:1213 */
-          if (!once_value_7) {
-            fra.me.REG[4] = BOX_NativeString("/");
-            REGB0 = TAG_Int(1);
-            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-            once_value_7 = fra.me.REG[4];
-            register_static_object(&once_value_7);
-          } else fra.me.REG[4] = once_value_7;
-          fra.me.REG[4] = fra.me.REG[4];
-          REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-          if (UNTAG_Bool(REGB0)) {
-          } else {
-            REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-            REGB0 = REGB1;
-          }
-          if (UNTAG_Bool(REGB0)) {
-            /* ./syntax//mmbuilder.nit:1214 */
-            if (!once_value_8) {
-              fra.me.REG[4] = BOX_NativeString("_slash");
-              REGB0 = TAG_Int(6);
-              fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-              once_value_8 = fra.me.REG[4];
-              register_static_object(&once_value_8);
-            } else fra.me.REG[4] = once_value_8;
-            fra.me.REG[4] = fra.me.REG[4];
-            fra.me.REG[3] = fra.me.REG[4];
-          } else {
-            /* ./syntax//mmbuilder.nit:1215 */
-            if (!once_value_9) {
-              fra.me.REG[4] = BOX_NativeString("%");
-              REGB0 = TAG_Int(1);
-              fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-              once_value_9 = fra.me.REG[4];
-              register_static_object(&once_value_9);
-            } else fra.me.REG[4] = once_value_9;
-            fra.me.REG[4] = fra.me.REG[4];
-            REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-            if (UNTAG_Bool(REGB0)) {
-            } else {
-              REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-              REGB0 = REGB1;
-            }
-            if (UNTAG_Bool(REGB0)) {
-              /* ./syntax//mmbuilder.nit:1216 */
-              if (!once_value_10) {
-               fra.me.REG[4] = BOX_NativeString("_percent");
-               REGB0 = TAG_Int(8);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_10 = fra.me.REG[4];
-               register_static_object(&once_value_10);
-              } else fra.me.REG[4] = once_value_10;
-              fra.me.REG[4] = fra.me.REG[4];
-              fra.me.REG[3] = fra.me.REG[4];
-            } else {
-              /* ./syntax//mmbuilder.nit:1217 */
-              if (!once_value_11) {
-               fra.me.REG[4] = BOX_NativeString("[]");
-               REGB0 = TAG_Int(2);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_11 = fra.me.REG[4];
-               register_static_object(&once_value_11);
-              } else fra.me.REG[4] = once_value_11;
-              fra.me.REG[4] = fra.me.REG[4];
-              REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-              if (UNTAG_Bool(REGB0)) {
-              } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-              }
-              if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1218 */
-               if (!once_value_12) {
-               fra.me.REG[4] = BOX_NativeString("_index");
-               REGB0 = TAG_Int(6);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_12 = fra.me.REG[4];
-               register_static_object(&once_value_12);
-               } else fra.me.REG[4] = once_value_12;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-              } else {
-               /* ./syntax//mmbuilder.nit:1219 */
-               if (!once_value_13) {
-               fra.me.REG[4] = BOX_NativeString("[]=");
-               REGB0 = TAG_Int(3);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_13 = fra.me.REG[4];
-               register_static_object(&once_value_13);
-               } else fra.me.REG[4] = once_value_13;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1220 */
-               if (!once_value_14) {
-               fra.me.REG[4] = BOX_NativeString("_index_assign");
-               REGB0 = TAG_Int(13);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_14 = fra.me.REG[4];
-               register_static_object(&once_value_14);
-               } else fra.me.REG[4] = once_value_14;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1221 */
-               if (!once_value_15) {
-               fra.me.REG[4] = BOX_NativeString("==");
-               REGB0 = TAG_Int(2);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_15 = fra.me.REG[4];
-               register_static_object(&once_value_15);
-               } else fra.me.REG[4] = once_value_15;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1222 */
-               if (!once_value_16) {
-               fra.me.REG[4] = BOX_NativeString("_equal");
-               REGB0 = TAG_Int(6);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_16 = fra.me.REG[4];
-               register_static_object(&once_value_16);
-               } else fra.me.REG[4] = once_value_16;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1223 */
-               if (!once_value_17) {
-               fra.me.REG[4] = BOX_NativeString("<");
-               REGB0 = TAG_Int(1);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_17 = fra.me.REG[4];
-               register_static_object(&once_value_17);
-               } else fra.me.REG[4] = once_value_17;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1224 */
-               if (!once_value_18) {
-               fra.me.REG[4] = BOX_NativeString("_less");
-               REGB0 = TAG_Int(5);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_18 = fra.me.REG[4];
-               register_static_object(&once_value_18);
-               } else fra.me.REG[4] = once_value_18;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1225 */
-               if (!once_value_19) {
-               fra.me.REG[4] = BOX_NativeString(">");
-               REGB0 = TAG_Int(1);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_19 = fra.me.REG[4];
-               register_static_object(&once_value_19);
-               } else fra.me.REG[4] = once_value_19;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1226 */
-               if (!once_value_20) {
-               fra.me.REG[4] = BOX_NativeString("_greater");
-               REGB0 = TAG_Int(8);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_20 = fra.me.REG[4];
-               register_static_object(&once_value_20);
-               } else fra.me.REG[4] = once_value_20;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1227 */
-               if (!once_value_21) {
-               fra.me.REG[4] = BOX_NativeString("<=");
-               REGB0 = TAG_Int(2);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_21 = fra.me.REG[4];
-               register_static_object(&once_value_21);
-               } else fra.me.REG[4] = once_value_21;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1228 */
-               if (!once_value_22) {
-               fra.me.REG[4] = BOX_NativeString("_less_or_equal");
-               REGB0 = TAG_Int(14);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_22 = fra.me.REG[4];
-               register_static_object(&once_value_22);
-               } else fra.me.REG[4] = once_value_22;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1229 */
-               if (!once_value_23) {
-               fra.me.REG[4] = BOX_NativeString(">=");
-               REGB0 = TAG_Int(2);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_23 = fra.me.REG[4];
-               register_static_object(&once_value_23);
-               } else fra.me.REG[4] = once_value_23;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1230 */
-               if (!once_value_24) {
-               fra.me.REG[4] = BOX_NativeString("_ge");
-               REGB0 = TAG_Int(3);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_24 = fra.me.REG[4];
-               register_static_object(&once_value_24);
-               } else fra.me.REG[4] = once_value_24;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1231 */
-               if (!once_value_25) {
-               fra.me.REG[4] = BOX_NativeString("!=");
-               REGB0 = TAG_Int(2);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_25 = fra.me.REG[4];
-               register_static_object(&once_value_25);
-               } else fra.me.REG[4] = once_value_25;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1232 */
-               if (!once_value_26) {
-               fra.me.REG[4] = BOX_NativeString("_not_equal");
-               REGB0 = TAG_Int(10);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_26 = fra.me.REG[4];
-               register_static_object(&once_value_26);
-               } else fra.me.REG[4] = once_value_26;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1233 */
-               if (!once_value_27) {
-               fra.me.REG[4] = BOX_NativeString(">>");
-               REGB0 = TAG_Int(2);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_27 = fra.me.REG[4];
-               register_static_object(&once_value_27);
-               } else fra.me.REG[4] = once_value_27;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1234 */
-               if (!once_value_28) {
-               fra.me.REG[4] = BOX_NativeString("_right");
-               REGB0 = TAG_Int(6);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_28 = fra.me.REG[4];
-               register_static_object(&once_value_28);
-               } else fra.me.REG[4] = once_value_28;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1235 */
-               if (!once_value_29) {
-               fra.me.REG[4] = BOX_NativeString("<<");
-               REGB0 = TAG_Int(2);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_29 = fra.me.REG[4];
-               register_static_object(&once_value_29);
-               } else fra.me.REG[4] = once_value_29;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1236 */
-               if (!once_value_30) {
-               fra.me.REG[4] = BOX_NativeString("_left");
-               REGB0 = TAG_Int(5);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_30 = fra.me.REG[4];
-               register_static_object(&once_value_30);
-               } else fra.me.REG[4] = once_value_30;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1237 */
-               if (!once_value_31) {
-               fra.me.REG[4] = BOX_NativeString("<=>");
-               REGB0 = TAG_Int(3);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_31 = fra.me.REG[4];
-               register_static_object(&once_value_31);
-               } else fra.me.REG[4] = once_value_31;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1238 */
-               if (!once_value_32) {
-               fra.me.REG[4] = BOX_NativeString("_starship");
-               REGB0 = TAG_Int(9);
-               fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-               once_value_32 = fra.me.REG[4];
-               register_static_object(&once_value_32);
-               } else fra.me.REG[4] = once_value_32;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./../lib/standard//collection//array.nit:23 */
-               REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
-               }
-               REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./syntax//mmbuilder.nit:1239 */
-               REGB1 = TAG_Int(1);
-               /* ./../lib/standard//kernel.nit:220 */
-               REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-               /* ./syntax//mmbuilder.nit:1239 */
-               REGB1 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB1);
-               REGB0 = TAG_Char('=');
-               REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB0));
-               if (UNTAG_Bool(REGB2)) {
-               } else {
-               /* ./../lib/standard//kernel.nit:350 */
-               REGB0 = TAG_Bool((REGB1)==(REGB0));
-               /* ./syntax//mmbuilder.nit:1239 */
-               REGB2 = REGB0;
-               }
-               if (UNTAG_Bool(REGB2)) {
-               /* ./syntax//mmbuilder.nit:1240 */
-               REGB2 = TAG_Int(3);
-               fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
-               if (!once_value_33) {
-               fra.me.REG[5] = BOX_NativeString("");
-               REGB2 = TAG_Int(0);
-               fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-               once_value_33 = fra.me.REG[5];
-               register_static_object(&once_value_33);
-               } else fra.me.REG[5] = once_value_33;
-               fra.me.REG[5] = fra.me.REG[5];
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-               REGB2 = TAG_Int(0);
-               /* ./../lib/standard//collection//array.nit:23 */
-               REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
-               }
-               REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./syntax//mmbuilder.nit:1240 */
-               REGB1 = TAG_Int(1);
-               /* ./../lib/standard//kernel.nit:220 */
-               REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-               /* ./syntax//mmbuilder.nit:1240 */
-               fra.me.REG[5] = CALL_standard___string___AbstractString___substring(fra.me.REG[2])(fra.me.REG[2], REGB2, REGB1);
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-               if (!once_value_34) {
-               fra.me.REG[5] = BOX_NativeString("__assign");
-               REGB1 = TAG_Int(8);
-               fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
-               once_value_34 = fra.me.REG[5];
-               register_static_object(&once_value_34);
-               } else fra.me.REG[5] = once_value_34;
-               fra.me.REG[5] = fra.me.REG[5];
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-               fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1242 */
-               fra.me.REG[3] = fra.me.REG[2];
-               }
-               }
-               }
-               }
-               }
-               }
-               }
-               }
-               }
-               }
-               }
-              }
-            }
-          }
-        }
-      }
-    }
-    /* ./syntax//mmbuilder.nit:1245 */
-    REGB1 = TAG_Int(5);
-    fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-    if (!once_value_35) {
-      fra.me.REG[4] = BOX_NativeString("");
-      REGB1 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-      once_value_35 = fra.me.REG[4];
-      register_static_object(&once_value_35);
-    } else fra.me.REG[4] = once_value_35;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-    fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[1])(fra.me.REG[1]);
-    fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-    if (!once_value_36) {
-      fra.me.REG[4] = BOX_NativeString("_");
-      REGB1 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-      once_value_36 = fra.me.REG[4];
-      register_static_object(&once_value_36);
-    } else fra.me.REG[4] = once_value_36;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-    if (!once_value_37) {
-      fra.me.REG[3] = BOX_NativeString("");
-      REGB1 = TAG_Int(0);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-      once_value_37 = fra.me.REG[3];
-      register_static_object(&once_value_37);
-    } else fra.me.REG[3] = once_value_37;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-    fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-    goto label38;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax___mmbuilder;
+  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;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  REGB0 = p3;
+  REGB1 = p4;
+  /* 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: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]);
+  fra.me.REG[1] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[0], NIT_NULL, fra.me.REG[1]);
+  CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void syntax___mmbuilder___AExternPropdef___accept_property_verifier(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax___mmbuilder;
+  fra.me.line = 1208;
+  fra.me.meth = LOCATE_syntax___mmbuilder___AExternPropdef___accept_property_verifier;
+  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:1208 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* 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 {
-    /* ./syntax//mmbuilder.nit:1247 */
-    fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
-    if (!once_value_39) {
-      if (!once_value_40) {
-        fra.me.REG[4] = BOX_NativeString("init");
-        REGB1 = TAG_Int(4);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-        once_value_40 = fra.me.REG[4];
-        register_static_object(&once_value_40);
-      } else fra.me.REG[4] = once_value_40;
-      fra.me.REG[4] = fra.me.REG[4];
-      fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
-      once_value_39 = fra.me.REG[4];
-      register_static_object(&once_value_39);
-    } else fra.me.REG[4] = once_value_39;
-    fra.me.REG[4] = fra.me.REG[4];
-    REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
     } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-      REGB1 = REGB2;
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* syntax/mmbuilder.nit: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, 1213);
     }
+    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:24 */
+    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      /* ./syntax//mmbuilder.nit:1248 */
-      REGB1 = TAG_Int(3);
-      fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-      if (!once_value_41) {
-        fra.me.REG[3] = BOX_NativeString("new_");
-        REGB1 = TAG_Int(4);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-        once_value_41 = fra.me.REG[3];
-        register_static_object(&once_value_41);
-      } else fra.me.REG[3] = once_value_41;
-      fra.me.REG[3] = fra.me.REG[3];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-      fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[1])(fra.me.REG[1]);
-      fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-      if (!once_value_42) {
-        fra.me.REG[3] = BOX_NativeString("");
-        REGB1 = TAG_Int(0);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-        once_value_42 = fra.me.REG[3];
-        register_static_object(&once_value_42);
-      } else fra.me.REG[3] = once_value_42;
-      fra.me.REG[3] = fra.me.REG[3];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-      fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-      fra.me.REG[2] = fra.me.REG[4];
-      goto label38;
-    } else {
-      /* ./syntax//mmbuilder.nit:1250 */
-      REGB1 = TAG_Int(5);
-      fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-      if (!once_value_43) {
-        fra.me.REG[3] = BOX_NativeString("new_");
-        REGB1 = TAG_Int(4);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-        once_value_43 = fra.me.REG[3];
-        register_static_object(&once_value_43);
-      } else fra.me.REG[3] = once_value_43;
-      fra.me.REG[3] = fra.me.REG[3];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-      fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[1])(fra.me.REG[1]);
-      fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
-      if (!once_value_44) {
-        fra.me.REG[1] = BOX_NativeString("_");
-        REGB1 = TAG_Int(1);
-        fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
-        once_value_44 = fra.me.REG[1];
-        register_static_object(&once_value_44);
-      } else fra.me.REG[1] = once_value_44;
-      fra.me.REG[1] = fra.me.REG[1];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
-      fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
-      fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
-      if (!once_value_45) {
-        fra.me.REG[0] = BOX_NativeString("");
-        REGB1 = TAG_Int(0);
-        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB1);
-        once_value_45 = fra.me.REG[0];
-        register_static_object(&once_value_45);
-      } else fra.me.REG[0] = once_value_45;
-      fra.me.REG[0] = fra.me.REG[0];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
-      fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-      fra.me.REG[2] = fra.me.REG[4];
-      goto label38;
+    } else {
+      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:1214 */
+    REGB2 = TAG_Int(2);
+    /* ../lib/standard/kernel.nit:237 */
+    REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
+    /* 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: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];
   }
-  label38: while(0);
+  /* 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;
-  return fra.me.REG[2];
+  return;
 }
 val_t syntax___mmbuilder___ATypePropdef___prop(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1257;
+  fra.me.line = 1223;
   fra.me.meth = LOCATE_syntax___mmbuilder___ATypePropdef___prop;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
+  fra.me.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:1257 */
-  fra.me.REG[0] = ATTR_syntax___mmbuilder___ATypePropdef____prop(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  /* syntax/mmbuilder.nit: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, 1257);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1223);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___mmbuilder___ATypePropdef___accept_property_builder(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1260;
+  fra.me.line = 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:1260 */
+  /* syntax/mmbuilder.nit:1226 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1262 */
+  /* 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:1263 */
+  /* 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:1264 */
+  /* 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:1265 */
+  /* syntax/mmbuilder.nit:1231 */
   ATTR_syntax___mmbuilder___ATypePropdef____prop(fra.me.REG[2]) = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:1266 */
+  /* 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;
@@ -9526,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 = 1269;
+  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;
@@ -9537,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:1269 */
+  /* syntax/mmbuilder.nit:1235 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1271 */
+  /* 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:1272 */
+  /* 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:1273 */
+  /* 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:1274 */
+  /* 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:1275 */
+  /* 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);
@@ -9580,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 = 1278;
+  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:1278 */
+  /* syntax/mmbuilder.nit:1244 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1280 */
+  /* 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:1281 */
+  /* 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:1282 */
+  /* 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;
@@ -9609,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 = 1289;
+  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:1289 */
+  /* 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, 1289);
+    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;
@@ -9631,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 = 1290;
+  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:1292 */
+  /* 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:1293 */
+    /* 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, 1293);
+      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, 1293);
+      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:1295 */
+    /* 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, 1295);
+      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]);
   }
@@ -9673,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 = 1301;
+  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:1301 */
+  /* 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];
@@ -9689,34 +9536,35 @@ void syntax___mmbuilder___AMethid___accept_property_builder(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1303;
+  fra.me.line = 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:1303 */
+  /* syntax/mmbuilder.nit:1269 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:1305 */
+  /* syntax/mmbuilder.nit:1271 */
   fra.me.REG[3] = NEW_MethidAccumulator_parser___parser_prod___Visitor___init();
-  /* ./syntax//mmbuilder.nit:1306 */
+  /* 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:1307 */
+  /* 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:1308 */
+  /* 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;
 }
 void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
@@ -9724,10 +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 = 1313;
+  fra.me.line = 1279;
   fra.me.meth = LOCATE_syntax___mmbuilder___ASignature___accept_property_verifier;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 7;
+  fra.me.REG_size = 8;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -9735,34 +9584,35 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1313 */
+  /* syntax/mmbuilder.nit:1279 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1315 */
+  /* 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:1316 */
+  /* 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:1317 */
+    /* syntax/mmbuilder.nit:1283 */
     goto label1;
   } else {
-    /* ./syntax//mmbuilder.nit:1318 */
+    /* 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:1319 */
+      /* 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]);
-      fra.me.REG[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
-      fra.me.REG[0] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[0])(fra.me.REG[0]);
-      fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
-      REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[1],fra.me.REG[0]));
+      fra.me.REG[4] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
+      fra.me.REG[4] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[4])(fra.me.REG[4]);
+      fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
+      REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[1],fra.me.REG[4]));
       if (UNTAG_Bool(REGB0)) {
       } else {
         REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
@@ -9770,7 +9620,7 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
           REGB1 = TAG_Bool(false);
           REGB0 = REGB1;
         } else {
-          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
           REGB0 = REGB1;
         }
       }
@@ -9778,16 +9628,16 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
       if (UNTAG_Bool(REGB0)) {
         REGB0 = TAG_Bool(true);
       } else {
-        fra.me.REG[0] = CALL_parser___parser_nodes___ASignature___n_type(fra.me.REG[2])(fra.me.REG[2]);
-        REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+        fra.me.REG[4] = CALL_parser___parser_nodes___ASignature___n_type(fra.me.REG[2])(fra.me.REG[2]);
+        REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+          REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
             REGB2 = TAG_Bool(false);
             REGB1 = REGB2;
           } else {
-            REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+            REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
             REGB1 = REGB2;
           }
         }
@@ -9795,10 +9645,10 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:1320 */
-        fra.me.REG[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
-        fra.me.REG[0] = CALL_syntax___mmbuilder___SignatureBuilder___untyped_params(fra.me.REG[0])(fra.me.REG[0]);
-        fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
+        /* syntax/mmbuilder.nit: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]);
         if (!once_value_2) {
           fra.me.REG[1] = BOX_NativeString("Syntax error: untyped parameter.");
           REGB0 = TAG_Int(32);
@@ -9807,12 +9657,12 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
           register_static_object(&once_value_2);
         } else fra.me.REG[1] = once_value_2;
         fra.me.REG[1] = fra.me.REG[1];
-        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1]);
-        /* ./syntax//mmbuilder.nit:1321 */
+        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4], fra.me.REG[1]);
+        /* syntax/mmbuilder.nit:1287 */
         goto label1;
       }
     } else {
-      /* ./syntax//mmbuilder.nit:1323 */
+      /* 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]);
@@ -9837,191 +9687,206 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:1324 */
+        /* syntax/mmbuilder.nit:1290 */
         fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-        /* ./syntax//mmbuilder.nit:1325 */
-        fra.me.REG[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
-        fra.me.REG[0] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[0])(fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:234 */
+        /* syntax/mmbuilder.nit: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:269 */
         REGB0 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:235 */
-        REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+        /* ../lib/standard/collection/array.nit:270 */
+        REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
-        REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:236 */
-        fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:237 */
+        REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+        /* ../lib/standard/collection/array.nit:271 */
+        fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+        /* ../lib/standard/collection/array.nit:272 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
-          REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+          /* ../lib/standard/collection/array.nit:24 */
+          REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+          }
+          REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+          REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB2)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-          /* ./../lib/standard//kernel.nit:215 */
+          /* ../lib/standard/kernel.nit:232 */
           REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ../lib/standard/collection/array.nit:272 */
           if (UNTAG_Bool(REGB1)) {
-            /* ./../lib/standard//collection//array.nit:238 */
-            REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+            /* ../lib/standard/collection/array.nit:273 */
+            REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
-            fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-            /* ./syntax//mmbuilder.nit:1326 */
-            fra.me.REG[6] = CALL_syntax___mmbuilder___AParam___stype(fra.me.REG[5])(fra.me.REG[5]);
-            REGB1 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
+            /* ../lib/standard/collection/array.nit:718 */
+            fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
+            /* syntax/mmbuilder.nit: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, 1326);
+              nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1292);
             }
-            fra.me.REG[5] = CALL_parser___parser_nodes___AParam___n_id(fra.me.REG[5])(fra.me.REG[5]);
-            fra.me.REG[5] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
-            fra.me.REG[5] = NEW_MMParam_metamodel___static_type___MMParam___init(fra.me.REG[6], fra.me.REG[5]);
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-            /* ./../lib/standard//collection//array.nit:239 */
+            fra.me.REG[6] = CALL_parser___parser_nodes___AParam___n_id(fra.me.REG[6])(fra.me.REG[6]);
+            fra.me.REG[6] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
+            fra.me.REG[6] = NEW_MMParam_metamodel___static_type___MMParam___init(fra.me.REG[7], fra.me.REG[6]);
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+            /* ../lib/standard/collection/array.nit:274 */
             REGB1 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ../lib/standard/kernel.nit:235 */
             REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB0 = REGB1;
           } else {
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ../lib/standard/collection/array.nit:272 */
             goto label3;
           }
         }
         label3: while(0);
-        /* ./syntax//mmbuilder.nit:1328 */
-        fra.me.REG[4] = NIT_NULL;
-        /* ./syntax//mmbuilder.nit:1329 */
-        fra.me.REG[0] = CALL_parser___parser_nodes___ASignature___n_type(fra.me.REG[2])(fra.me.REG[2]);
-        REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+        /* syntax/mmbuilder.nit:1294 */
+        fra.me.REG[0] = NIT_NULL;
+        /* 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)) {
         } else {
-          REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+          REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
             REGB1 = TAG_Bool(false);
             REGB0 = REGB1;
           } else {
-            REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+            REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
             REGB0 = REGB1;
           }
         }
         REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
         if (UNTAG_Bool(REGB0)) {
-          /* ./syntax//mmbuilder.nit:1330 */
+          /* syntax/mmbuilder.nit: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, 1330);
+            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[4] = fra.me.REG[2];
-          /* ./syntax//mmbuilder.nit:1331 */
-          REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+          fra.me.REG[0] = fra.me.REG[2];
+          /* syntax/mmbuilder.nit:1297 */
+          REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
           } else {
-            REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+            REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
               REGB1 = TAG_Bool(false);
               REGB0 = REGB1;
             } else {
-              REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+              REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
               REGB0 = REGB1;
             }
           }
           if (UNTAG_Bool(REGB0)) {
-            /* ./syntax//mmbuilder.nit:1332 */
+            /* syntax/mmbuilder.nit: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:1333 */
+            /* syntax/mmbuilder.nit:1299 */
             goto label1;
           }
         }
-        /* ./syntax//mmbuilder.nit:1336 */
+        /* 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[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
-        fra.me.REG[0] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[0])(fra.me.REG[0]);
-        fra.me.REG[0] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
-        CALL_syntax___mmbuilder___SignatureBuilder___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-        /* ./syntax//mmbuilder.nit:1337 */
-        fra.me.REG[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
-        REGB0 = CALL_syntax___mmbuilder___SignatureBuilder___vararg_rank(fra.me.REG[0])(fra.me.REG[0]);
+        fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
+        fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[5])(fra.me.REG[5]);
+        fra.me.REG[5] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
+        CALL_syntax___mmbuilder___SignatureBuilder___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+        /* syntax/mmbuilder.nit: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);
-        /* ./../lib/standard//kernel.nit:216 */
+        REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+        if (UNTAG_Bool(REGB2)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ../lib/standard/kernel.nit:233 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-        /* ./syntax//mmbuilder.nit:1337 */
+        /* syntax/mmbuilder.nit:1303 */
         if (UNTAG_Bool(REGB1)) {
-          /* ./syntax//mmbuilder.nit:1338 */
-          fra.me.REG[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
-          fra.me.REG[0] = CALL_syntax___mmbuilder___SignatureBuilder___signature(fra.me.REG[0])(fra.me.REG[0]);
+          /* syntax/mmbuilder.nit: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[0]==NIT_NULL);
+          REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
-            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1338);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1304);
           }
-          CALL_metamodel___vararg___MMSignature___vararg_rank__eq(fra.me.REG[0])(fra.me.REG[0], REGB1);
+          CALL_metamodel___vararg___MMSignature___vararg_rank__eq(fra.me.REG[5])(fra.me.REG[5], REGB1);
         }
-        /* ./syntax//mmbuilder.nit:1340 */
-        fra.me.REG[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
-        fra.me.REG[0] = CALL_syntax___mmbuilder___SignatureBuilder___closure_decls(fra.me.REG[0])(fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:234 */
+        /* syntax/mmbuilder.nit: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:269 */
         REGB1 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:235 */
-        REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+        /* ../lib/standard/collection/array.nit:270 */
+        REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
-        REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:236 */
-        fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:237 */
+        REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
+        /* ../lib/standard/collection/array.nit:271 */
+        fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
+        /* ../lib/standard/collection/array.nit:272 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
-          REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+          /* ../lib/standard/collection/array.nit:24 */
+          REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+          }
+          REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
+          REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB2)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-          /* ./../lib/standard//kernel.nit:215 */
+          /* ../lib/standard/kernel.nit:232 */
           REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ../lib/standard/collection/array.nit:272 */
           if (UNTAG_Bool(REGB0)) {
-            /* ./../lib/standard//collection//array.nit:238 */
+            /* ../lib/standard/collection/array.nit:273 */
             REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
             if (UNTAG_Bool(REGB0)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
-            fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-            /* ./syntax//mmbuilder.nit:1341 */
+            /* ../lib/standard/collection/array.nit:718 */
+            fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
+            /* syntax/mmbuilder.nit: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, 1341);
+              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[4] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[4])(fra.me.REG[4]);
-            fra.me.REG[4] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[4])(fra.me.REG[4]);
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-            /* ./../lib/standard//collection//array.nit:239 */
+            fra.me.REG[0] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[0])(fra.me.REG[0]);
+            fra.me.REG[0] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[0])(fra.me.REG[0]);
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+            /* ../lib/standard/collection/array.nit:274 */
             REGB0 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ../lib/standard/kernel.nit:235 */
             REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ../lib/standard/collection/array.nit:274 */
             REGB1 = REGB0;
           } else {
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ../lib/standard/collection/array.nit:272 */
             goto label4;
           }
         }
@@ -10037,13 +9902,15 @@ void syntax___mmbuilder___ASignature___check_visibility(val_t p0, val_t p1, val_
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1346;
+  fra.me.line = 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;
@@ -10051,20 +9918,25 @@ void syntax___mmbuilder___ASignature___check_visibility(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:1349 */
+  /* syntax/mmbuilder.nit: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);
-  /* ./../lib/standard//kernel.nit:216 */
+  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB2)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ../lib/standard/kernel.nit:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./syntax//mmbuilder.nit:1349 */
+  /* syntax/mmbuilder.nit:1315 */
   if (UNTAG_Bool(REGB1)) {
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:1350 */
+  /* 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:1353 */
+  /* 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)) {
@@ -10083,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, 1353);
+      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]);
   }
@@ -10103,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:1351 */
+    /* 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)) {
@@ -10128,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, 1351);
+        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]);
     }
@@ -10141,58 +10014,63 @@ val_t syntax___mmbuilder___AParam___position(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1358;
+  fra.me.line = 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:1358 */
+  /* 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, 1358);
+    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;
   return REGB0;
 }
 val_t syntax___mmbuilder___AParam___variable(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1360;
+  fra.me.line = 1326;
   fra.me.meth = LOCATE_syntax___mmbuilder___AParam___variable;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
+  fra.me.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:1360 */
-  fra.me.REG[0] = ATTR_syntax___mmbuilder___AParam____variable(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  /* syntax/mmbuilder.nit: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, 1360);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1326);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t syntax___mmbuilder___AParam___stype(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1363;
+  fra.me.line = 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:1363 */
+  /* 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];
@@ -10202,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 = 1363;
+  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:1363 */
+  /* syntax/mmbuilder.nit:1329 */
   ATTR_syntax___mmbuilder___AParam____stype(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -10225,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 = 1366;
+  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;
@@ -10238,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:1366 */
+  /* syntax/mmbuilder.nit:1332 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1368 */
+  /* 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:1369 */
+  /* 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:1369 */
+  /* syntax/mmbuilder.nit:1335 */
   ATTR_syntax___mmbuilder___AParam____position(fra.me.REG[2]) = REGB0;
-  /* ./syntax//mmbuilder.nit:1370 */
+  /* 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:1371 */
+  /* 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:1372 */
+  /* 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:1373 */
+  /* 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)) {
@@ -10285,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:1374 */
+    /* 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, 1374);
+      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:1375 */
+    /* syntax/mmbuilder.nit:1341 */
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -10306,74 +10186,79 @@ void syntax___mmbuilder___AParam___accept_property_verifier(val_t p0, val_t p1){
       }
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:1376 */
+      /* syntax/mmbuilder.nit: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:1377 */
+      /* syntax/mmbuilder.nit:1343 */
       goto label1;
     }
-    /* ./syntax//mmbuilder.nit:1379 */
+    /* 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:234 */
+    /* ../lib/standard/collection/array.nit:269 */
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:270 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-    /* ./../lib/standard//collection//array.nit:236 */
+    /* ../lib/standard/collection/array.nit:271 */
     fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ../lib/standard/collection/array.nit:272 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ../lib/standard/collection/array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-      /* ./../lib/standard//kernel.nit:215 */
+      REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+      if (UNTAG_Bool(REGB2)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+      }
+      /* ../lib/standard/kernel.nit:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:238 */
+        /* ../lib/standard/collection/array.nit:273 */
         REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ../lib/standard/collection/array.nit:718 */
         fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-        /* ./syntax//mmbuilder.nit:1380 */
+        /* syntax/mmbuilder.nit:1346 */
         CALL_syntax___mmbuilder___AParam___stype__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
-        /* ./syntax//mmbuilder.nit:1381 */
+        /* syntax/mmbuilder.nit:1347 */
         REGB1 = CALL_syntax___mmbuilder___AParam___is_vararg(fra.me.REG[2])(fra.me.REG[2]);
         if (UNTAG_Bool(REGB1)) {
-          /* ./syntax//mmbuilder.nit:1382 */
+          /* syntax/mmbuilder.nit: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:1382 */
+          /* 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:1382 */
+            /* syntax/mmbuilder.nit:1348 */
             REGB3 = REGB2;
           }
           if (UNTAG_Bool(REGB3)) {
-            /* ./syntax//mmbuilder.nit:1383 */
+            /* 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:1385 */
+            /* 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);
@@ -10384,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:1387 */
+          /* 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:1389 */
+        /* 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:239 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB3 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ../lib/standard/kernel.nit:235 */
         REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ../lib/standard/collection/array.nit:274 */
         REGB0 = REGB3;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ../lib/standard/collection/array.nit:272 */
         goto label3;
       }
     }
     label3: while(0);
-    /* ./syntax//mmbuilder.nit:1391 */
+    /* syntax/mmbuilder.nit: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]);
@@ -10419,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 = 1395;
+  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:1395 */
+  /* 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)) {
@@ -10451,45 +10337,49 @@ val_t syntax___mmbuilder___AClosureDecl___position(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1399;
+  fra.me.line = 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:1399 */
+  /* 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, 1399);
+    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;
   return REGB0;
 }
 val_t syntax___mmbuilder___AClosureDecl___variable(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1401;
+  fra.me.line = 1367;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClosureDecl___variable;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
+  fra.me.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:1401 */
-  fra.me.REG[0] = ATTR_syntax___mmbuilder___AClosureDecl____variable(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  /* syntax/mmbuilder.nit: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, 1401);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1367);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
@@ -10505,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 = 1404;
+  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;
@@ -10522,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:1404 */
+  /* syntax/mmbuilder.nit:1370 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1406 */
+  /* 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:1407 */
+  /* 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:1408 */
+  /* 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:1409 */
+  /* 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:1410 */
+    /* syntax/mmbuilder.nit:1376 */
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:1412 */
+  /* 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:1413 */
+  /* syntax/mmbuilder.nit:1379 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10556,17 +10447,17 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1414 */
+    /* 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:1416 */
+  /* 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, 1416);
+    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);
@@ -10602,7 +10493,7 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1417 */
+    /* syntax/mmbuilder.nit: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);
@@ -10613,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:1421 */
+  /* 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:1422 */
+  /* syntax/mmbuilder.nit:1388 */
   if (!once_value_3) {
     if (!once_value_4) {
       fra.me.REG[5] = BOX_NativeString("break");
@@ -10636,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:1423 */
+  /* 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, 1423);
+    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:1425 */
+  /* 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:1426 */
+  /* 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)) {
@@ -10676,40 +10567,45 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   fra.me.REG[1] = NEW_MMClosure_metamodel___static_type___MMClosure___init(fra.me.REG[0], fra.me.REG[1], REGB1, REGB0);
-  /* ./syntax//mmbuilder.nit:1427 */
+  /* syntax/mmbuilder.nit:1393 */
   fra.me.REG[5] = CALL_syntax___mmbuilder___SignatureBuilder___closure_decls(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ../lib/standard/collection/array.nit:718 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:1428 */
+      /* syntax/mmbuilder.nit: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]));
@@ -10719,7 +10615,7 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:1429 */
+        /* syntax/mmbuilder.nit: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);
@@ -10760,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:1430 */
+        /* syntax/mmbuilder.nit:1396 */
         goto label1;
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label8;
     }
   }
   label8: while(0);
-  /* ./syntax//mmbuilder.nit:1433 */
+  /* syntax/mmbuilder.nit:1399 */
   CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:1434 */
+  /* syntax/mmbuilder.nit: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:1434 */
+  /* syntax/mmbuilder.nit:1400 */
   ATTR_syntax___mmbuilder___AClosureDecl____position(fra.me.REG[2]) = REGB0;
-  /* ./syntax//mmbuilder.nit:1435 */
+  /* 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:1436 */
+  /* 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]);
@@ -10805,16 +10701,18 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
     static val_t once_value_2; /* Once value */
     static val_t once_value_3; /* Once value */
     static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1441;
+  fra.me.line = 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;
@@ -10824,19 +10722,24 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:1444 */
+  /* syntax/mmbuilder.nit: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);
-  /* ./../lib/standard//kernel.nit:216 */
+  REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB2)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ../lib/standard/kernel.nit:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./syntax//mmbuilder.nit:1444 */
+  /* syntax/mmbuilder.nit:1410 */
   if (UNTAG_Bool(REGB1)) {
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:1445 */
+  /* 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:1446 */
+  /* syntax/mmbuilder.nit:1412 */
   REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
@@ -10852,21 +10755,26 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
   if (UNTAG_Bool(REGB1)) {
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:1447 */
+  /* syntax/mmbuilder.nit:1413 */
   REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1447);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1413);
   }
   fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:1448 */
+  /* syntax/mmbuilder.nit: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);
-  /* ./../lib/standard//kernel.nit:216 */
+  REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB2)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ../lib/standard/kernel.nit:233 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-  /* ./syntax//mmbuilder.nit:1448 */
+  /* syntax/mmbuilder.nit:1414 */
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1449 */
+    /* 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) {
@@ -10903,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:1451 */
+  /* 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);
@@ -10920,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:1452 */
+    /* 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;
@@ -10935,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 = 1458;
+  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;
@@ -10951,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 = 1459;
+  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;
@@ -10967,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 = 1460;
+  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;
@@ -10978,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];
+}