c_src: update
[nit.git] / c_src / syntax_base._sep.c
index 3cf8070..3357bff 100644 (file)
@@ -1,112 +1,5 @@
 /* This C file is generated by NIT to compile module syntax_base. */
 #include "syntax_base._sep.h"
-val_t syntax_base___MMSrcModule___nodes(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 47;
-  fra.me.meth = LOCATE_syntax_base___MMSrcModule___nodes;
-  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] = ATTR_syntax_base___MMSrcModule____nodes(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-  /* ./syntax//syntax_base.nit:49 */
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-      REGB0 = REGB1;
-    }
-  }
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-    fra.me.REG[2] = ATTR_syntax_base___MMSrcModule____nodes(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-      fprintf(stderr, "Reciever is null");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 49);
-      nit_exit(1);
-    }
-    REGB0 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  } else {
-    REGB1 = TAG_Bool(false);
-    REGB0 = REGB1;
-  }
-  if (UNTAG_Bool(REGB0)) {
-    fra.me.REG[0] = ATTR_syntax_base___MMSrcModule____nodes(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-      fprintf(stderr, "Reciever is null");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 49);
-      nit_exit(1);
-    }
-    fra.me.REG[1] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-    goto label1;
-  } else {
-    fra.me.REG[1] = NIT_NULL;
-    goto label1;
-  }
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-void syntax_base___MMSrcModule___nodes__eq(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 51;
-  fra.me.meth = LOCATE_syntax_base___MMSrcModule___nodes__eq;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  fra.me.REG[2] = p2;
-  fra.me.REG[3] = ATTR_syntax_base___MMSrcModule____nodes(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-  /* ./syntax//syntax_base.nit:53 */
-  if (UNTAG_Bool(REGB0)) {
-    fprintf(stderr, "Reciever is null");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 53);
-    nit_exit(1);
-  }
-  REGB0 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    fprintf(stderr, "Assert failed");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 53);
-    nit_exit(1);
-  }
-  fra.me.REG[0] = ATTR_syntax_base___MMSrcModule____nodes(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-  /* ./syntax//syntax_base.nit:54 */
-  if (UNTAG_Bool(REGB0)) {
-    fprintf(stderr, "Reciever is null");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 54);
-    nit_exit(1);
-  }
-  CALL_abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
 void syntax_base___MMSrcModule___clear_ast(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -135,14 +28,12 @@ val_t syntax_base___MMSrcModule___node(val_t p0){
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:35 */
   fra.me.REG[0] = CALL_syntax_base___MMModule___nodes(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[0]);
   REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_AModule, ID_AModule)) /*cast AModule*/;
-  /* ./syntax//syntax_base.nit:35 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Cast failed");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 35);
-    nit_exit(1);
+    nit_abort("Cast failed", NULL, LOCATE_syntax_base, 35);
   }
   goto label1;
   label1: while(0);
@@ -161,13 +52,11 @@ val_t syntax_base___MMSrcModule___src_local_classes(val_t p0){
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax_base___MMSrcModule____src_local_classes(fra.me.REG[0])!=NIT_NULL);
   /* ./syntax//syntax_base.nit:37 */
+  REGB0 = TAG_Bool(ATTR_syntax_base___MMSrcModule____src_local_classes(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_src_local_classes");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 37);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_src_local_classes", LOCATE_syntax_base, 37);
   }
   fra.me.REG[0] = ATTR_syntax_base___MMSrcModule____src_local_classes(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -197,18 +86,116 @@ void syntax_base___MMSrcModule___init(val_t p0, val_t p1, val_t p2, val_t p3, va
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
+  /* ./syntax//syntax_base.nit:40 */
   fra.me.REG[6] = fra.me.REG[0];
   /* ./syntax//syntax_base.nit:42 */
   CALL_abstractmetamodel___MMModule___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3], fra.me.REG[1], fra.me.REG[5], init_table);
   /* ./syntax//syntax_base.nit:43 */
   CALL_syntax_base___MMModule___nodes__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[6], fra.me.REG[2]);
-  fra.me.REG[2] = NEW_HashMap_hash_collection___HashMap___init();
   /* ./syntax//syntax_base.nit:44 */
+  fra.me.REG[2] = NEW_HashMap_hash_collection___HashMap___init();
   ATTR_syntax_base___MMSrcModule____src_local_classes(fra.me.REG[6]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
   return;
 }
+val_t syntax_base___MMSrcModule___nodes(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax_base;
+  fra.me.line = 47;
+  fra.me.meth = LOCATE_syntax_base___MMSrcModule___nodes;
+  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//syntax_base.nit:49 */
+  fra.me.REG[2] = ATTR_syntax_base___MMSrcModule____nodes(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    fra.me.REG[2] = ATTR_syntax_base___MMSrcModule____nodes(fra.me.REG[0]);
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 49);
+    }
+    REGB0 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  } else {
+    REGB1 = TAG_Bool(false);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    fra.me.REG[0] = ATTR_syntax_base___MMSrcModule____nodes(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_base, 49);
+    }
+    fra.me.REG[1] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+    goto label1;
+  } else {
+    fra.me.REG[1] = NIT_NULL;
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+void syntax_base___MMSrcModule___nodes__eq(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax_base;
+  fra.me.line = 51;
+  fra.me.meth = LOCATE_syntax_base___MMSrcModule___nodes__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./syntax//syntax_base.nit:53 */
+  fra.me.REG[3] = ATTR_syntax_base___MMSrcModule____nodes(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_base, 53);
+  }
+  REGB0 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_syntax_base, 53);
+  }
+  /* ./syntax//syntax_base.nit:54 */
+  fra.me.REG[0] = ATTR_syntax_base___MMSrcModule____nodes(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_base, 54);
+  }
+  CALL_abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
 val_t syntax_base___MMModule___nodes(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -222,8 +209,8 @@ val_t syntax_base___MMModule___nodes(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  fra.me.REG[1] = NIT_NULL;
   /* ./syntax//syntax_base.nit:60 */
+  fra.me.REG[1] = NIT_NULL;
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -245,9 +232,7 @@ void syntax_base___MMModule___nodes__eq(val_t p0, val_t p1, val_t p2){
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   /* ./syntax//syntax_base.nit:62 */
-  fprintf(stderr, "Aborted");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 62);
-  nit_exit(1);
+  nit_abort("Aborted", NULL, LOCATE_syntax_base, 62);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -279,44 +264,46 @@ val_t syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1, val_t p
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./syntax//syntax_base.nit:68 */
   fra.me.REG[4] = CALL_abstractmetamodel___MMGlobalClass___intro(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___module(fra.me.REG[4])(fra.me.REG[4]);
-  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_MMSrcModule, ID_MMSrcModule)) /*cast MMSrcModule*/;
+  fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[4])(fra.me.REG[4]);
   /* ./syntax//syntax_base.nit:69 */
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_MMSrcModule, ID_MMSrcModule)) /*cast MMSrcModule*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Assert failed");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 69);
-    nit_exit(1);
+    nit_abort("Assert failed", NULL, LOCATE_syntax_base, 69);
   }
+  /* ./syntax//syntax_base.nit:70 */
   REGB0 = CALL_abstractmetamodel___MMModule___visibility_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  /* ./syntax//syntax_base.nit:71 */
   REGB1 = TAG_Int(3);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
-  /* ./syntax//syntax_base.nit:71 */
   if (UNTAG_Bool(REGB2)) {
   } else {
+    /* ./../lib/standard//kernel.nit:207 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
+    /* ./syntax//syntax_base.nit:71 */
     REGB2 = REGB1;
-  /* ./syntax//syntax_base.nit:71 */
   }
   if (UNTAG_Bool(REGB2)) {
-    REGB2 = TAG_Bool(true);
     /* ./syntax//syntax_base.nit:72 */
+    REGB2 = TAG_Bool(true);
     goto label1;
   } else {
+    /* ./syntax//syntax_base.nit:73 */
     REGB1 = TAG_Int(0);
     REGB3 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
-    /* ./syntax//syntax_base.nit:73 */
     if (UNTAG_Bool(REGB3)) {
     } else {
+      /* ./../lib/standard//kernel.nit:207 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
+      /* ./syntax//syntax_base.nit:73 */
       REGB3 = REGB1;
-    /* ./syntax//syntax_base.nit:73 */
     }
     if (UNTAG_Bool(REGB3)) {
+      /* ./syntax//syntax_base.nit:74 */
       REGB3 = TAG_Int(5);
       fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB3);
-      /* ./syntax//syntax_base.nit:74 */
       if (!once_value_2) {
         fra.me.REG[5] = BOX_NativeString("Visibility error: Class ");
         REGB3 = TAG_Int(24);
@@ -324,9 +311,10 @@ val_t syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1, val_t p
         once_value_2 = fra.me.REG[5];
         register_static_object(&once_value_2);
       } else fra.me.REG[5] = once_value_2;
-      array___Array___add(fra.me.REG[4], fra.me.REG[5]);
+      fra.me.REG[5] = fra.me.REG[5];
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
       fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
-      array___Array___add(fra.me.REG[4], fra.me.REG[5]);
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
       if (!once_value_3) {
         fra.me.REG[5] = BOX_NativeString(" comes from the hidden module ");
         REGB3 = TAG_Int(30);
@@ -334,9 +322,10 @@ val_t syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1, val_t p
         once_value_3 = fra.me.REG[5];
         register_static_object(&once_value_3);
       } else fra.me.REG[5] = once_value_3;
-      array___Array___add(fra.me.REG[4], fra.me.REG[5]);
+      fra.me.REG[5] = fra.me.REG[5];
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
       fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-      array___Array___add(fra.me.REG[4], fra.me.REG[3]);
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
       if (!once_value_4) {
         fra.me.REG[3] = BOX_NativeString(".");
         REGB3 = TAG_Int(1);
@@ -344,22 +333,25 @@ val_t syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1, val_t p
         once_value_4 = fra.me.REG[3];
         register_static_object(&once_value_4);
       } else fra.me.REG[3] = once_value_4;
-      array___Array___add(fra.me.REG[4], fra.me.REG[3]);
+      fra.me.REG[3] = fra.me.REG[3];
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
       fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
       CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
+      /* ./syntax//syntax_base.nit:75 */
       REGB3 = TAG_Bool(false);
       REGB2 = REGB3;
-      /* ./syntax//syntax_base.nit:75 */
       goto label1;
     } else {
+      /* ./syntax//syntax_base.nit:76 */
       REGB3 = CALL_abstractmetamodel___MMGlobalClass___visibility_level(fra.me.REG[0])(fra.me.REG[0]);
       REGB1 = TAG_Int(3);
+      /* ./../lib/standard//kernel.nit:213 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB1));
       /* ./syntax//syntax_base.nit:76 */
       if (UNTAG_Bool(REGB1)) {
+        /* ./syntax//syntax_base.nit:77 */
         REGB1 = TAG_Int(3);
         fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB1);
-        /* ./syntax//syntax_base.nit:77 */
         if (!once_value_5) {
           fra.me.REG[3] = BOX_NativeString("Visibility error: Class ");
           REGB1 = TAG_Int(24);
@@ -367,9 +359,10 @@ val_t syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1, val_t p
           once_value_5 = fra.me.REG[3];
           register_static_object(&once_value_5);
         } else fra.me.REG[3] = once_value_5;
-        array___Array___add(fra.me.REG[4], fra.me.REG[3]);
+        fra.me.REG[3] = fra.me.REG[3];
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
         fra.me.REG[0] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
-        array___Array___add(fra.me.REG[4], fra.me.REG[0]);
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
         if (!once_value_6) {
           fra.me.REG[0] = BOX_NativeString(" is private.");
           REGB1 = TAG_Int(12);
@@ -377,19 +370,20 @@ val_t syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1, val_t p
           once_value_6 = fra.me.REG[0];
           register_static_object(&once_value_6);
         } else fra.me.REG[0] = once_value_6;
-        array___Array___add(fra.me.REG[4], fra.me.REG[0]);
+        fra.me.REG[0] = fra.me.REG[0];
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
         fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
         CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
+        /* ./syntax//syntax_base.nit:78 */
         REGB1 = TAG_Bool(false);
         REGB2 = REGB1;
-        /* ./syntax//syntax_base.nit:78 */
         goto label1;
       }
     }
   }
+  /* ./syntax//syntax_base.nit:80 */
   REGB1 = TAG_Bool(true);
   REGB2 = REGB1;
-  /* ./syntax//syntax_base.nit:80 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -408,15 +402,13 @@ val_t syntax_base___MMSrcLocalClass___node(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = CALL_abstractmetamodel___MMLocalClass___module(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./syntax//syntax_base.nit:88 */
+  fra.me.REG[1] = CALL_abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_syntax_base___MMModule___nodes(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   REGB0 = TAG_Bool((fra.me.REG[0]==NIT_NULL) || VAL_ISA(fra.me.REG[0], COLOR_AClassdef, ID_AClassdef)) /*cast nullable AClassdef*/;
-  /* ./syntax//syntax_base.nit:88 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Cast failed");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 88);
-    nit_exit(1);
+    nit_abort("Cast failed", NULL, LOCATE_syntax_base, 88);
   }
   goto label1;
   label1: while(0);
@@ -435,13 +427,11 @@ val_t syntax_base___MMSrcLocalClass___formal_dict(val_t p0){
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax_base___MMSrcLocalClass____formal_dict(fra.me.REG[0])!=NIT_NULL);
   /* ./syntax//syntax_base.nit:90 */
+  REGB0 = TAG_Bool(ATTR_syntax_base___MMSrcLocalClass____formal_dict(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_formal_dict");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 90);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_formal_dict", LOCATE_syntax_base, 90);
   }
   fra.me.REG[0] = ATTR_syntax_base___MMSrcLocalClass____formal_dict(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -459,13 +449,11 @@ val_t syntax_base___MMSrcLocalClass___src_local_properties(val_t p0){
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax_base___MMSrcLocalClass____src_local_properties(fra.me.REG[0])!=NIT_NULL);
   /* ./syntax//syntax_base.nit:93 */
+  REGB0 = TAG_Bool(ATTR_syntax_base___MMSrcLocalClass____src_local_properties(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_src_local_properties");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 93);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_src_local_properties", LOCATE_syntax_base, 93);
   }
   fra.me.REG[0] = ATTR_syntax_base___MMSrcLocalClass____src_local_properties(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -493,13 +481,14 @@ void syntax_base___MMSrcLocalClass___init(val_t p0, val_t p1, val_t p2, val_t p3
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   REGB0 = p4;
+  /* ./syntax//syntax_base.nit:96 */
   fra.me.REG[4] = fra.me.REG[0];
   /* ./syntax//syntax_base.nit:98 */
   CALL_abstractmetamodel___MMLocalClass___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, init_table);
   /* ./syntax//syntax_base.nit:99 */
   CALL_syntax_base___MMModule___nodes__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[3]);
-  fra.me.REG[3] = NEW_HashMap_hash_collection___HashMap___init();
   /* ./syntax//syntax_base.nit:100 */
+  fra.me.REG[3] = NEW_HashMap_hash_collection___HashMap___init();
   ATTR_syntax_base___MMSrcLocalClass____src_local_properties(fra.me.REG[4]) = fra.me.REG[3];
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
@@ -537,44 +526,46 @@ val_t syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t p1, val_
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   REGB0 = p4;
+  /* ./syntax//syntax_base.nit:107 */
   fra.me.REG[4] = CALL_abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___module(fra.me.REG[4])(fra.me.REG[4]);
-  REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_MMSrcModule, ID_MMSrcModule)) /*cast MMSrcModule*/;
+  fra.me.REG[4] = CALL_abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[4])(fra.me.REG[4]);
   /* ./syntax//syntax_base.nit:108 */
+  REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_MMSrcModule, ID_MMSrcModule)) /*cast MMSrcModule*/;
   if (UNTAG_Bool(REGB1)) {
   } else {
-    fprintf(stderr, "Assert failed");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 108);
-    nit_exit(1);
+    nit_abort("Assert failed", NULL, LOCATE_syntax_base, 108);
   }
+  /* ./syntax//syntax_base.nit:109 */
   REGB1 = CALL_abstractmetamodel___MMModule___visibility_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  /* ./syntax//syntax_base.nit:110 */
   REGB2 = TAG_Int(3);
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
-  /* ./syntax//syntax_base.nit:110 */
   if (UNTAG_Bool(REGB3)) {
   } else {
+    /* ./../lib/standard//kernel.nit:207 */
     REGB2 = TAG_Bool((REGB1)==(REGB2));
+    /* ./syntax//syntax_base.nit:110 */
     REGB3 = REGB2;
-  /* ./syntax//syntax_base.nit:110 */
   }
   if (UNTAG_Bool(REGB3)) {
-    REGB3 = TAG_Bool(true);
     /* ./syntax//syntax_base.nit:111 */
+    REGB3 = TAG_Bool(true);
     goto label1;
   } else {
+    /* ./syntax//syntax_base.nit:112 */
     REGB2 = TAG_Int(0);
     REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
-    /* ./syntax//syntax_base.nit:112 */
     if (UNTAG_Bool(REGB4)) {
     } else {
+      /* ./../lib/standard//kernel.nit:207 */
       REGB2 = TAG_Bool((REGB1)==(REGB2));
+      /* ./syntax//syntax_base.nit:112 */
       REGB4 = REGB2;
-    /* ./syntax//syntax_base.nit:112 */
     }
     if (UNTAG_Bool(REGB4)) {
+      /* ./syntax//syntax_base.nit:114 */
       REGB4 = TAG_Int(5);
       fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB4);
-      /* ./syntax//syntax_base.nit:114 */
       if (!once_value_2) {
         fra.me.REG[5] = BOX_NativeString("Visibility error: Property ");
         REGB4 = TAG_Int(27);
@@ -582,9 +573,10 @@ val_t syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t p1, val_
         once_value_2 = fra.me.REG[5];
         register_static_object(&once_value_2);
       } else fra.me.REG[5] = once_value_2;
-      array___Array___add(fra.me.REG[4], fra.me.REG[5]);
+      fra.me.REG[5] = fra.me.REG[5];
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
       fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
-      array___Array___add(fra.me.REG[4], fra.me.REG[5]);
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
       if (!once_value_3) {
         fra.me.REG[5] = BOX_NativeString(" comes from the hidden module ");
         REGB4 = TAG_Int(30);
@@ -592,9 +584,10 @@ val_t syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t p1, val_
         once_value_3 = fra.me.REG[5];
         register_static_object(&once_value_3);
       } else fra.me.REG[5] = once_value_3;
-      array___Array___add(fra.me.REG[4], fra.me.REG[5]);
+      fra.me.REG[5] = fra.me.REG[5];
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
       fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-      array___Array___add(fra.me.REG[4], fra.me.REG[3]);
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
       if (!once_value_4) {
         fra.me.REG[3] = BOX_NativeString(".");
         REGB4 = TAG_Int(1);
@@ -602,22 +595,25 @@ val_t syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t p1, val_
         once_value_4 = fra.me.REG[3];
         register_static_object(&once_value_4);
       } else fra.me.REG[3] = once_value_4;
-      array___Array___add(fra.me.REG[4], fra.me.REG[3]);
+      fra.me.REG[3] = fra.me.REG[3];
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
       fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
       CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
+      /* ./syntax//syntax_base.nit:115 */
       REGB4 = TAG_Bool(false);
       REGB3 = REGB4;
-      /* ./syntax//syntax_base.nit:115 */
       goto label1;
     } else {
+      /* ./syntax//syntax_base.nit:116 */
       REGB4 = CALL_abstractmetamodel___MMGlobalProperty___visibility_level(fra.me.REG[0])(fra.me.REG[0]);
       REGB2 = TAG_Int(3);
+      /* ./../lib/standard//kernel.nit:213 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB2));
       /* ./syntax//syntax_base.nit:116 */
       if (UNTAG_Bool(REGB2)) {
+        /* ./syntax//syntax_base.nit:117 */
         REGB2 = TAG_Int(3);
         fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB2);
-        /* ./syntax//syntax_base.nit:117 */
         if (!once_value_5) {
           fra.me.REG[3] = BOX_NativeString("Visibility error: Property ");
           REGB2 = TAG_Int(27);
@@ -625,9 +621,10 @@ val_t syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t p1, val_
           once_value_5 = fra.me.REG[3];
           register_static_object(&once_value_5);
         } else fra.me.REG[3] = once_value_5;
-        array___Array___add(fra.me.REG[4], fra.me.REG[3]);
+        fra.me.REG[3] = fra.me.REG[3];
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
         fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
-        array___Array___add(fra.me.REG[4], fra.me.REG[3]);
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
         if (!once_value_6) {
           fra.me.REG[3] = BOX_NativeString(" is private.");
           REGB2 = TAG_Int(12);
@@ -635,16 +632,19 @@ val_t syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t p1, val_
           once_value_6 = fra.me.REG[3];
           register_static_object(&once_value_6);
         } else fra.me.REG[3] = once_value_6;
-        array___Array___add(fra.me.REG[4], fra.me.REG[3]);
+        fra.me.REG[3] = fra.me.REG[3];
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
         fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
         CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
+        /* ./syntax//syntax_base.nit:118 */
         REGB2 = TAG_Bool(false);
         REGB3 = REGB2;
-        /* ./syntax//syntax_base.nit:118 */
         goto label1;
       } else {
+        /* ./syntax//syntax_base.nit:119 */
         REGB2 = CALL_abstractmetamodel___MMGlobalProperty___visibility_level(fra.me.REG[0])(fra.me.REG[0]);
         REGB4 = TAG_Int(2);
+        /* ./../lib/standard//kernel.nit:213 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB4));
         /* ./syntax//syntax_base.nit:119 */
         if (UNTAG_Bool(REGB4)) {
@@ -654,9 +654,9 @@ val_t syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t p1, val_
           REGB0 = REGB4;
         }
         if (UNTAG_Bool(REGB0)) {
+          /* ./syntax//syntax_base.nit:120 */
           REGB0 = TAG_Int(3);
           fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
-          /* ./syntax//syntax_base.nit:120 */
           if (!once_value_7) {
             fra.me.REG[3] = BOX_NativeString("Visibility error: Property ");
             REGB0 = TAG_Int(27);
@@ -664,9 +664,10 @@ val_t syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t p1, val_
             once_value_7 = fra.me.REG[3];
             register_static_object(&once_value_7);
           } else fra.me.REG[3] = once_value_7;
-          array___Array___add(fra.me.REG[4], fra.me.REG[3]);
+          fra.me.REG[3] = fra.me.REG[3];
+          CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
           fra.me.REG[0] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
-          array___Array___add(fra.me.REG[4], fra.me.REG[0]);
+          CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
           if (!once_value_8) {
             fra.me.REG[0] = BOX_NativeString(" is protected and can only acceded by self.");
             REGB0 = TAG_Int(43);
@@ -674,20 +675,21 @@ val_t syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t p1, val_
             once_value_8 = fra.me.REG[0];
             register_static_object(&once_value_8);
           } else fra.me.REG[0] = once_value_8;
-          array___Array___add(fra.me.REG[4], fra.me.REG[0]);
+          fra.me.REG[0] = fra.me.REG[0];
+          CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
           fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
           CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
+          /* ./syntax//syntax_base.nit:121 */
           REGB0 = TAG_Bool(false);
           REGB3 = REGB0;
-          /* ./syntax//syntax_base.nit:121 */
           goto label1;
         }
       }
     }
   }
+  /* ./syntax//syntax_base.nit:123 */
   REGB0 = TAG_Bool(true);
   REGB3 = REGB0;
-  /* ./syntax//syntax_base.nit:123 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -704,8 +706,8 @@ val_t syntax_base___MMLocalProperty___node(val_t p0){
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[0] = NIT_NULL;
   /* ./syntax//syntax_base.nit:129 */
+  fra.me.REG[0] = NIT_NULL;
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -723,8 +725,8 @@ val_t syntax_base___MMLocalProperty___is_init(val_t p0){
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(false);
   /* ./syntax//syntax_base.nit:132 */
+  REGB0 = TAG_Bool(false);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -743,15 +745,13 @@ val_t syntax_base___MMSrcAttribute___node(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = CALL_abstractmetamodel___MMLocalProperty___module(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./syntax//syntax_base.nit:138 */
+  fra.me.REG[1] = CALL_abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_syntax_base___MMModule___nodes(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   REGB0 = TAG_Bool((fra.me.REG[0]==NIT_NULL) || VAL_ISA(fra.me.REG[0], COLOR_AAttrPropdef, ID_AAttrPropdef)) /*cast nullable AAttrPropdef*/;
-  /* ./syntax//syntax_base.nit:138 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Cast failed");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 138);
-    nit_exit(1);
+    nit_abort("Cast failed", NULL, LOCATE_syntax_base, 138);
   }
   goto label1;
   label1: while(0);
@@ -778,11 +778,12 @@ void syntax_base___MMSrcAttribute___init(val_t p0, val_t p1, val_t p2, val_t p3,
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./syntax//syntax_base.nit:139 */
   fra.me.REG[4] = fra.me.REG[0];
   /* ./syntax//syntax_base.nit:141 */
   CALL_abstractmetamodel___MMLocalProperty___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  fra.me.REG[2] = CALL_abstractmetamodel___MMLocalClass___module(fra.me.REG[2])(fra.me.REG[2]);
   /* ./syntax//syntax_base.nit:142 */
+  fra.me.REG[2] = CALL_abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[2])(fra.me.REG[2]);
   CALL_syntax_base___MMModule___nodes__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
   init_table[itpos2] = 1;
@@ -800,8 +801,8 @@ val_t syntax_base___MMSrcMethod___is_intern(val_t p0){
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(false);
   /* ./syntax//syntax_base.nit:149 */
+  REGB0 = TAG_Bool(false);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -819,35 +820,51 @@ val_t syntax_base___MMSrcMethod___is_abstract(val_t p0){
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(false);
   /* ./syntax//syntax_base.nit:150 */
+  REGB0 = TAG_Bool(false);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+val_t syntax_base___MMSrcMethod___extern_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_base;
+  fra.me.line = 151;
+  fra.me.meth = LOCATE_syntax_base___MMSrcMethod___extern_name;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:151 */
+  fra.me.REG[0] = NIT_NULL;
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
 val_t syntax_base___MMAttrImplementationMethod___node(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 156;
+  fra.me.line = 157;
   fra.me.meth = LOCATE_syntax_base___MMAttrImplementationMethod___node;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = CALL_abstractmetamodel___MMLocalProperty___module(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./syntax//syntax_base.nit:157 */
+  fra.me.REG[1] = CALL_abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_syntax_base___MMModule___nodes(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   REGB0 = TAG_Bool((fra.me.REG[0]==NIT_NULL) || VAL_ISA(fra.me.REG[0], COLOR_AAttrPropdef, ID_AAttrPropdef)) /*cast nullable AAttrPropdef*/;
-  /* ./syntax//syntax_base.nit:156 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Cast failed");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 156);
-    nit_exit(1);
+    nit_abort("Cast failed", NULL, LOCATE_syntax_base, 157);
   }
   goto label1;
   label1: while(0);
@@ -861,7 +878,7 @@ void syntax_base___MMAttrImplementationMethod___init(val_t p0, val_t p1, val_t p
   if (init_table[itpos3]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 157;
+  fra.me.line = 158;
   fra.me.meth = LOCATE_syntax_base___MMAttrImplementationMethod___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -874,11 +891,12 @@ void syntax_base___MMAttrImplementationMethod___init(val_t p0, val_t p1, val_t p
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./syntax//syntax_base.nit:158 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* ./syntax//syntax_base.nit:159 */
-  CALL_abstractmetamodel___MMLocalProperty___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  fra.me.REG[2] = CALL_abstractmetamodel___MMLocalClass___module(fra.me.REG[2])(fra.me.REG[2]);
   /* ./syntax//syntax_base.nit:160 */
+  CALL_abstractmetamodel___MMLocalProperty___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  /* ./syntax//syntax_base.nit:161 */
+  fra.me.REG[2] = CALL_abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[2])(fra.me.REG[2]);
   CALL_syntax_base___MMModule___nodes__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
   init_table[itpos3] = 1;
@@ -891,7 +909,7 @@ void syntax_base___MMReadImplementationMethod___init(val_t p0, val_t p1, val_t p
   if (init_table[itpos4]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 167;
+  fra.me.line = 168;
   fra.me.meth = LOCATE_syntax_base___MMReadImplementationMethod___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -903,7 +921,7 @@ void syntax_base___MMReadImplementationMethod___init(val_t p0, val_t p1, val_t p
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./syntax//syntax_base.nit:169 */
+  /* ./syntax//syntax_base.nit:170 */
   CALL_syntax_base___MMAttrImplementationMethod___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos4] = 1;
@@ -916,7 +934,7 @@ void syntax_base___MMWriteImplementationMethod___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_base;
-  fra.me.line = 176;
+  fra.me.line = 177;
   fra.me.meth = LOCATE_syntax_base___MMWriteImplementationMethod___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -928,111 +946,137 @@ void syntax_base___MMWriteImplementationMethod___init(val_t p0, val_t p1, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./syntax//syntax_base.nit:178 */
+  /* ./syntax//syntax_base.nit:179 */
   CALL_syntax_base___MMAttrImplementationMethod___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos5] = 1;
   return;
 }
-val_t syntax_base___MMMethSrcMethod___is_intern(val_t p0){
+val_t syntax_base___MMMethSrcMethod___is_init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
   fra.me.line = 186;
-  fra.me.meth = LOCATE_syntax_base___MMMethSrcMethod___is_intern;
+  fra.me.meth = LOCATE_syntax_base___MMMethSrcMethod___is_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax_base___MMMethSrcMethod____is_intern(fra.me.REG[0])!=NIT_NULL);
   /* ./syntax//syntax_base.nit:186 */
+  REGB0 = TAG_Bool(ATTR_syntax_base___MMMethSrcMethod____is_init(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_is_intern");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 186);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_is_init", LOCATE_syntax_base, 186);
   }
-  REGB0 = ATTR_syntax_base___MMMethSrcMethod____is_intern(fra.me.REG[0]);
+  REGB0 = ATTR_syntax_base___MMMethSrcMethod____is_init(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
-val_t syntax_base___MMMethSrcMethod___is_abstract(val_t p0){
+val_t syntax_base___MMMethSrcMethod___is_intern(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
   fra.me.line = 187;
-  fra.me.meth = LOCATE_syntax_base___MMMethSrcMethod___is_abstract;
+  fra.me.meth = LOCATE_syntax_base___MMMethSrcMethod___is_intern;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax_base___MMMethSrcMethod____is_abstract(fra.me.REG[0])!=NIT_NULL);
   /* ./syntax//syntax_base.nit:187 */
+  REGB0 = TAG_Bool(ATTR_syntax_base___MMMethSrcMethod____is_intern(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_is_abstract");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 187);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_is_intern", LOCATE_syntax_base, 187);
   }
-  REGB0 = ATTR_syntax_base___MMMethSrcMethod____is_abstract(fra.me.REG[0]);
+  REGB0 = ATTR_syntax_base___MMMethSrcMethod____is_intern(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
-val_t syntax_base___MMMethSrcMethod___node(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t syntax_base___MMMethSrcMethod___is_abstract(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
   fra.me.line = 188;
-  fra.me.meth = LOCATE_syntax_base___MMMethSrcMethod___node;
+  fra.me.meth = LOCATE_syntax_base___MMMethSrcMethod___is_abstract;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = CALL_abstractmetamodel___MMLocalProperty___module(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_syntax_base___MMModule___nodes(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  REGB0 = TAG_Bool((fra.me.REG[0]==NIT_NULL) || VAL_ISA(fra.me.REG[0], COLOR_AMethPropdef, ID_AMethPropdef)) /*cast nullable AMethPropdef*/;
   /* ./syntax//syntax_base.nit:188 */
+  REGB0 = TAG_Bool(ATTR_syntax_base___MMMethSrcMethod____is_abstract(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Cast failed");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 188);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_is_abstract", LOCATE_syntax_base, 188);
   }
-  goto label1;
-  label1: while(0);
+  REGB0 = ATTR_syntax_base___MMMethSrcMethod____is_abstract(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return REGB0;
 }
-val_t syntax_base___MMMethSrcMethod___is_init(val_t p0){
+val_t syntax_base___MMMethSrcMethod___extern_name(val_t p0){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 185;
-  fra.me.meth = LOCATE_syntax_base___MMMethSrcMethod___is_init;
+  fra.me.line = 189;
+  fra.me.meth = LOCATE_syntax_base___MMMethSrcMethod___extern_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax_base___MMMethSrcMethod____is_init(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:185 */
+  /* ./syntax//syntax_base.nit:189 */
+  fra.me.REG[0] = ATTR_syntax_base___MMMethSrcMethod____extern_name(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void syntax_base___MMMethSrcMethod___extern_name__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax_base;
+  fra.me.line = 189;
+  fra.me.meth = LOCATE_syntax_base___MMMethSrcMethod___extern_name__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//syntax_base.nit:189 */
+  ATTR_syntax_base___MMMethSrcMethod____extern_name(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t syntax_base___MMMethSrcMethod___node(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax_base;
+  fra.me.line = 190;
+  fra.me.meth = LOCATE_syntax_base___MMMethSrcMethod___node;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:190 */
+  fra.me.REG[1] = CALL_abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_syntax_base___MMModule___nodes(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  REGB0 = TAG_Bool((fra.me.REG[0]==NIT_NULL) || VAL_ISA(fra.me.REG[0], COLOR_AMethPropdef, ID_AMethPropdef)) /*cast nullable AMethPropdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_is_init");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 185);
-    nit_exit(1);
+    nit_abort("Cast failed", NULL, LOCATE_syntax_base, 190);
   }
-  REGB0 = ATTR_syntax_base___MMMethSrcMethod____is_init(fra.me.REG[0]);
+  goto label1;
+  label1: while(0);
   stack_frame_head = fra.me.prev;
-  return REGB0;
+  return fra.me.REG[0];
 }
 void syntax_base___MMMethSrcMethod___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos6 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_MMMethSrcMethod].i;
@@ -1042,7 +1086,7 @@ void syntax_base___MMMethSrcMethod___init(val_t p0, val_t p1, val_t p2, val_t p3
   if (init_table[itpos6]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 189;
+  fra.me.line = 191;
   fra.me.meth = LOCATE_syntax_base___MMMethSrcMethod___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -1055,24 +1099,27 @@ void syntax_base___MMMethSrcMethod___init(val_t p0, val_t p1, val_t p2, val_t p3
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  fra.me.REG[4] = fra.me.REG[0];
   /* ./syntax//syntax_base.nit:191 */
+  fra.me.REG[4] = fra.me.REG[0];
+  /* ./syntax//syntax_base.nit:193 */
   CALL_abstractmetamodel___MMLocalProperty___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  fra.me.REG[2] = CALL_abstractmetamodel___MMLocalClass___module(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//syntax_base.nit:192 */
+  /* ./syntax//syntax_base.nit:194 */
+  fra.me.REG[2] = CALL_abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[2])(fra.me.REG[2]);
   CALL_syntax_base___MMModule___nodes__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4], fra.me.REG[3]);
+  /* ./syntax//syntax_base.nit:195 */
   fra.me.REG[3] = CALL_syntax_base___MMLocalProperty___node(fra.me.REG[4])(fra.me.REG[4]);
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_AConcreteInitPropdef, ID_AConcreteInitPropdef)) /*cast AConcreteInitPropdef*/;
-  /* ./syntax//syntax_base.nit:193 */
   ATTR_syntax_base___MMMethSrcMethod____is_init(fra.me.REG[4]) = REGB0;
+  /* ./syntax//syntax_base.nit:196 */
   fra.me.REG[3] = CALL_syntax_base___MMLocalProperty___node(fra.me.REG[4])(fra.me.REG[4]);
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_AInternMethPropdef, ID_AInternMethPropdef)) /*cast AInternMethPropdef*/;
-  /* ./syntax//syntax_base.nit:194 */
   ATTR_syntax_base___MMMethSrcMethod____is_intern(fra.me.REG[4]) = REGB0;
+  /* ./syntax//syntax_base.nit:197 */
   fra.me.REG[3] = CALL_syntax_base___MMLocalProperty___node(fra.me.REG[4])(fra.me.REG[4]);
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_ADeferredMethPropdef, ID_ADeferredMethPropdef)) /*cast ADeferredMethPropdef*/;
-  /* ./syntax//syntax_base.nit:195 */
   ATTR_syntax_base___MMMethSrcMethod____is_abstract(fra.me.REG[4]) = REGB0;
+  /* ./syntax//syntax_base.nit:198 */
+  ATTR_syntax_base___MMMethSrcMethod____extern_name(fra.me.REG[4]) = NIT_NULL;
   stack_frame_head = fra.me.prev;
   init_table[itpos6] = 1;
   return;
@@ -1084,7 +1131,7 @@ void syntax_base___MMSrcTypeProperty___init(val_t p0, val_t p1, val_t p2, val_t
   if (init_table[itpos7]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 203;
+  fra.me.line = 206;
   fra.me.meth = LOCATE_syntax_base___MMSrcTypeProperty___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1096,66 +1143,62 @@ void syntax_base___MMSrcTypeProperty___init(val_t p0, val_t p1, val_t p2, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./syntax//syntax_base.nit:205 */
+  /* ./syntax//syntax_base.nit:208 */
   CALL_abstractmetamodel___MMLocalProperty___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[itpos7] = 1;
   return;
 }
+val_t syntax_base___MMImplicitInit___super_init(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_base;
+  fra.me.line = 215;
+  fra.me.meth = LOCATE_syntax_base___MMImplicitInit___super_init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./syntax//syntax_base.nit:215 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 215);
+  stack_frame_head = fra.me.prev;
+  return NIT_NULL;
+}
 val_t syntax_base___MMImplicitInit___is_init(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 213;
+  fra.me.line = 216;
   fra.me.meth = LOCATE_syntax_base___MMImplicitInit___is_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:216 */
   REGB0 = TAG_Bool(true);
-  /* ./syntax//syntax_base.nit:213 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
-val_t syntax_base___MMImplicitInit___super_init(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_base;
-  fra.me.line = 212;
-  fra.me.meth = LOCATE_syntax_base___MMImplicitInit___super_init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:212 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 212);
-  nit_exit(1);
-  stack_frame_head = fra.me.prev;
-  return NIT_NULL;
-}
 val_t syntax_base___MMImplicitInit___unassigned_attributes(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 214;
+  fra.me.line = 217;
   fra.me.meth = LOCATE_syntax_base___MMImplicitInit___unassigned_attributes;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:217 */
   REGB0 = TAG_Bool(ATTR_syntax_base___MMImplicitInit____unassigned_attributes(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:214 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_unassigned_attributes");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 214);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_unassigned_attributes", LOCATE_syntax_base, 217);
   }
   fra.me.REG[0] = ATTR_syntax_base___MMImplicitInit____unassigned_attributes(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1167,19 +1210,17 @@ val_t syntax_base___MMImplicitInit___super_inits(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 215;
+  fra.me.line = 218;
   fra.me.meth = LOCATE_syntax_base___MMImplicitInit___super_inits;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:218 */
   REGB0 = TAG_Bool(ATTR_syntax_base___MMImplicitInit____super_inits(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:215 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_super_inits");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 215);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_super_inits", LOCATE_syntax_base, 218);
   }
   fra.me.REG[0] = ATTR_syntax_base___MMImplicitInit____super_inits(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1195,7 +1236,7 @@ void syntax_base___MMImplicitInit___init(val_t p0, val_t p1, val_t p2, val_t p3,
   if (init_table[itpos8]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 216;
+  fra.me.line = 219;
   fra.me.meth = LOCATE_syntax_base___MMImplicitInit___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -1209,8 +1250,9 @@ void syntax_base___MMImplicitInit___init(val_t p0, val_t p1, val_t p2, val_t p3,
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./syntax//syntax_base.nit:219 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* ./syntax//syntax_base.nit:218 */
+  /* ./syntax//syntax_base.nit:221 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString("init");
@@ -1219,65 +1261,38 @@ void syntax_base___MMImplicitInit___init(val_t p0, val_t p1, val_t p2, val_t p3,
       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];
     fra.me.REG[5] = CALL_symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
     once_value_1 = fra.me.REG[5];
     register_static_object(&once_value_1);
   } else fra.me.REG[5] = once_value_1;
+  fra.me.REG[5] = fra.me.REG[5];
   CALL_syntax_base___MMMethSrcMethod___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[1], NIT_NULL, init_table);
-  /* ./syntax//syntax_base.nit:219 */
+  /* ./syntax//syntax_base.nit:222 */
   ATTR_syntax_base___MMImplicitInit____unassigned_attributes(fra.me.REG[4]) = fra.me.REG[2];
-  /* ./syntax//syntax_base.nit:220 */
+  /* ./syntax//syntax_base.nit:223 */
   ATTR_syntax_base___MMImplicitInit____super_inits(fra.me.REG[4]) = fra.me.REG[3];
   stack_frame_head = fra.me.prev;
   init_table[itpos8] = 1;
   return;
 }
-val_t syntax_base___Variable___to_s(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 240;
-  fra.me.meth = LOCATE_syntax_base___Variable___to_s;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax_base___Variable____name(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:240 */
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_name");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 240);
-    nit_exit(1);
-  }
-  fra.me.REG[0] = ATTR_syntax_base___Variable____name(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
 val_t syntax_base___Variable___name(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 226;
+  fra.me.line = 229;
   fra.me.meth = LOCATE_syntax_base___Variable___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:229 */
   REGB0 = TAG_Bool(ATTR_syntax_base___Variable____name(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:226 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_name");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 226);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_syntax_base, 229);
   }
   fra.me.REG[0] = ATTR_syntax_base___Variable____name(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1288,63 +1303,30 @@ val_t syntax_base___Variable___decl(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 229;
+  fra.me.line = 232;
   fra.me.meth = LOCATE_syntax_base___Variable___decl;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:232 */
   fra.me.REG[0] = ATTR_syntax_base___Variable____decl(fra.me.REG[0]);
-  /* ./syntax//syntax_base.nit:229 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t syntax_base___Variable___is_typed(val_t p0){
-  struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 232;
-  fra.me.meth = LOCATE_syntax_base___Variable___is_typed;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[0] = ATTR_syntax_base___Variable____stype(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-  /* ./syntax//syntax_base.nit:235 */
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
-      REGB0 = REGB1;
-    }
-  }
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
 val_t syntax_base___Variable___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_base;
-  fra.me.line = 237;
+  fra.me.line = 235;
   fra.me.meth = LOCATE_syntax_base___Variable___stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:235 */
   fra.me.REG[0] = ATTR_syntax_base___Variable____stype(fra.me.REG[0]);
-  /* ./syntax//syntax_base.nit:237 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
@@ -1353,7 +1335,7 @@ void syntax_base___Variable___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_base;
-  fra.me.line = 237;
+  fra.me.line = 235;
   fra.me.meth = LOCATE_syntax_base___Variable___stype__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1361,24 +1343,47 @@ void syntax_base___Variable___stype__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//syntax_base.nit:237 */
+  /* ./syntax//syntax_base.nit:235 */
   ATTR_syntax_base___Variable____stype(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  return;
+  return;
+}
+val_t syntax_base___Variable___to_s(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax_base;
+  fra.me.line = 238;
+  fra.me.meth = LOCATE_syntax_base___Variable___to_s;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:238 */
+  REGB0 = TAG_Bool(ATTR_syntax_base___Variable____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_syntax_base, 238);
+  }
+  fra.me.REG[0] = ATTR_syntax_base___Variable____name(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
 }
 val_t syntax_base___Variable___kind(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_base;
-  fra.me.line = 242;
+  fra.me.line = 240;
   fra.me.meth = LOCATE_syntax_base___Variable___kind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:242 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 242);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:240 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 240);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -1389,7 +1394,7 @@ void syntax_base___Variable___init(val_t p0, val_t p1, val_t p2, int* init_table
   if (init_table[itpos9]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 244;
+  fra.me.line = 242;
   fra.me.meth = LOCATE_syntax_base___Variable___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1399,9 +1404,9 @@ void syntax_base___Variable___init(val_t p0, val_t p1, val_t p2, int* init_table
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//syntax_base.nit:246 */
+  /* ./syntax//syntax_base.nit:244 */
   ATTR_syntax_base___Variable____name(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//syntax_base.nit:247 */
+  /* ./syntax//syntax_base.nit:245 */
   ATTR_syntax_base___Variable____decl(fra.me.REG[0]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
   init_table[itpos9] = 1;
@@ -1415,13 +1420,13 @@ val_t syntax_base___VarVariable___kind(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_base;
-  fra.me.line = 254;
+  fra.me.line = 252;
   fra.me.meth = LOCATE_syntax_base___VarVariable___kind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//syntax_base.nit:254 */
+  /* ./syntax//syntax_base.nit:252 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("variable");
@@ -1430,9 +1435,11 @@ val_t syntax_base___VarVariable___kind(val_t p0){
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
+    fra.me.REG[0] = fra.me.REG[0];
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
+  fra.me.REG[0] = fra.me.REG[0];
   goto label3;
   label3: while(0);
   stack_frame_head = fra.me.prev;
@@ -1445,7 +1452,7 @@ void syntax_base___VarVariable___init(val_t p0, val_t p1, val_t p2, int* init_ta
   if (init_table[itpos10]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 255;
+  fra.me.line = 253;
   fra.me.meth = LOCATE_syntax_base___VarVariable___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1455,7 +1462,7 @@ void syntax_base___VarVariable___init(val_t p0, val_t p1, val_t p2, int* init_ta
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//syntax_base.nit:255 */
+  /* ./syntax//syntax_base.nit:253 */
   CALL_syntax_base___Variable___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[itpos10] = 1;
@@ -1469,13 +1476,13 @@ val_t syntax_base___ParamVariable___kind(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_base;
-  fra.me.line = 261;
+  fra.me.line = 259;
   fra.me.meth = LOCATE_syntax_base___ParamVariable___kind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//syntax_base.nit:261 */
+  /* ./syntax//syntax_base.nit:259 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("parameter");
@@ -1484,9 +1491,11 @@ val_t syntax_base___ParamVariable___kind(val_t p0){
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
+    fra.me.REG[0] = fra.me.REG[0];
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
+  fra.me.REG[0] = fra.me.REG[0];
   goto label3;
   label3: while(0);
   stack_frame_head = fra.me.prev;
@@ -1499,7 +1508,7 @@ void syntax_base___ParamVariable___init(val_t p0, val_t p1, val_t p2, int* init_
   if (init_table[itpos11]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 262;
+  fra.me.line = 260;
   fra.me.meth = LOCATE_syntax_base___ParamVariable___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1509,7 +1518,7 @@ void syntax_base___ParamVariable___init(val_t p0, val_t p1, val_t p2, int* init_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//syntax_base.nit:262 */
+  /* ./syntax//syntax_base.nit:260 */
   CALL_syntax_base___Variable___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[itpos11] = 1;
@@ -1523,13 +1532,13 @@ val_t syntax_base___AutoVariable___kind(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_base;
-  fra.me.line = 268;
+  fra.me.line = 266;
   fra.me.meth = LOCATE_syntax_base___AutoVariable___kind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//syntax_base.nit:268 */
+  /* ./syntax//syntax_base.nit:266 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("automatic variable");
@@ -1538,9 +1547,11 @@ val_t syntax_base___AutoVariable___kind(val_t p0){
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
+    fra.me.REG[0] = fra.me.REG[0];
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
+  fra.me.REG[0] = fra.me.REG[0];
   goto label3;
   label3: while(0);
   stack_frame_head = fra.me.prev;
@@ -1553,7 +1564,7 @@ void syntax_base___AutoVariable___init(val_t p0, val_t p1, val_t p2, int* init_t
   if (init_table[itpos12]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 269;
+  fra.me.line = 267;
   fra.me.meth = LOCATE_syntax_base___AutoVariable___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1563,7 +1574,7 @@ void syntax_base___AutoVariable___init(val_t p0, val_t p1, val_t p2, int* init_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//syntax_base.nit:269 */
+  /* ./syntax//syntax_base.nit:267 */
   CALL_syntax_base___Variable___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[itpos12] = 1;
@@ -1577,13 +1588,13 @@ val_t syntax_base___ClosureVariable___kind(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_base;
-  fra.me.line = 276;
+  fra.me.line = 274;
   fra.me.meth = LOCATE_syntax_base___ClosureVariable___kind;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//syntax_base.nit:276 */
+  /* ./syntax//syntax_base.nit:274 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("closure");
@@ -1592,9 +1603,11 @@ val_t syntax_base___ClosureVariable___kind(val_t p0){
       once_value_2 = fra.me.REG[0];
       register_static_object(&once_value_2);
     } else fra.me.REG[0] = once_value_2;
+    fra.me.REG[0] = fra.me.REG[0];
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
   } else fra.me.REG[0] = once_value_1;
+  fra.me.REG[0] = fra.me.REG[0];
   goto label3;
   label3: while(0);
   stack_frame_head = fra.me.prev;
@@ -1606,19 +1619,17 @@ val_t syntax_base___ClosureVariable___closure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 278;
+  fra.me.line = 276;
   fra.me.meth = LOCATE_syntax_base___ClosureVariable___closure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:276 */
   REGB0 = TAG_Bool(ATTR_syntax_base___ClosureVariable____closure(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:278 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_closure");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 278);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_closure", LOCATE_syntax_base, 276);
   }
   fra.me.REG[0] = ATTR_syntax_base___ClosureVariable____closure(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1631,7 +1642,7 @@ void syntax_base___ClosureVariable___init(val_t p0, val_t p1, val_t p2, val_t p3
   if (init_table[itpos13]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 281;
+  fra.me.line = 279;
   fra.me.meth = LOCATE_syntax_base___ClosureVariable___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -1644,10 +1655,11 @@ void syntax_base___ClosureVariable___init(val_t p0, val_t p1, val_t p2, val_t p3
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./syntax//syntax_base.nit:279 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* ./syntax//syntax_base.nit:283 */
+  /* ./syntax//syntax_base.nit:281 */
   CALL_syntax_base___Variable___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  /* ./syntax//syntax_base.nit:284 */
+  /* ./syntax//syntax_base.nit:282 */
   ATTR_syntax_base___ClosureVariable____closure(fra.me.REG[4]) = fra.me.REG[3];
   stack_frame_head = fra.me.prev;
   init_table[itpos13] = 1;
@@ -1661,7 +1673,7 @@ val_t syntax_base___AbsSyntaxVisitor___get_type_by_name(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_base;
-  fra.me.line = 293;
+  fra.me.line = 291;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___get_type_by_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -1673,34 +1685,28 @@ val_t syntax_base___AbsSyntaxVisitor___get_type_by_name(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____module(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:295 */
+  /* ./syntax//syntax_base.nit:293 */
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_module");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 295);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_syntax_base, 293);
   }
-  fra.me.REG[2] = ATTR_syntax_base___AbsSyntaxVisitor____module(fra.me.REG[0]);
+  fra.me.REG[2] = ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0]);
   REGB0 = CALL_abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_tc");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 295);
-      nit_exit(1);
+      nit_abort("Uninitialized attribute %s", "_tc", LOCATE_syntax_base, 293);
     }
     fra.me.REG[2] = ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0]);
-    REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____module(fra.me.REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_module");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 295);
-      nit_exit(1);
+      nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_syntax_base, 293);
     }
-    fra.me.REG[3] = ATTR_syntax_base___AbsSyntaxVisitor____module(fra.me.REG[0]);
+    fra.me.REG[3] = ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0]);
     fra.me.REG[3] = CALL_abstractmetamodel___MMModule___location(fra.me.REG[3])(fra.me.REG[3]);
     REGB0 = TAG_Int(3);
     fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
@@ -1711,9 +1717,10 @@ val_t syntax_base___AbsSyntaxVisitor___get_type_by_name(val_t p0, val_t p1){
       once_value_1 = fra.me.REG[5];
       register_static_object(&once_value_1);
     } else fra.me.REG[5] = once_value_1;
-    array___Array___add(fra.me.REG[4], fra.me.REG[5]);
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
-    array___Array___add(fra.me.REG[4], fra.me.REG[5]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString("\"");
       REGB0 = TAG_Int(1);
@@ -1721,22 +1728,21 @@ val_t syntax_base___AbsSyntaxVisitor___get_type_by_name(val_t p0, val_t p1){
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
-    array___Array___add(fra.me.REG[4], fra.me.REG[5]);
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_mmloader___ToolContext___fatal_error(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
   }
-  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____module(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:296 */
+  /* ./syntax//syntax_base.nit:294 */
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_module");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 296);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_syntax_base, 294);
   }
-  fra.me.REG[0] = ATTR_syntax_base___AbsSyntaxVisitor____module(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0]);
   fra.me.REG[1] = CALL_abstractmetamodel___MMModule___class_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./syntax//syntax_base.nit:295 */
   fra.me.REG[1] = CALL_static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//syntax_base.nit:297 */
   goto label3;
   label3: while(0);
   stack_frame_head = fra.me.prev;
@@ -1750,7 +1756,7 @@ val_t syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name(val_t p0, v
     static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 300;
+  fra.me.line = 298;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -1764,34 +1770,28 @@ val_t syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name(val_t p0, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____module(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:302 */
+  /* ./syntax//syntax_base.nit:300 */
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_module");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 302);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_syntax_base, 300);
   }
-  fra.me.REG[3] = ATTR_syntax_base___AbsSyntaxVisitor____module(fra.me.REG[0]);
+  fra.me.REG[3] = ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0]);
   REGB0 = CALL_abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_tc");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 302);
-      nit_exit(1);
+      nit_abort("Uninitialized attribute %s", "_tc", LOCATE_syntax_base, 300);
     }
     fra.me.REG[3] = ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0]);
-    REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____module(fra.me.REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      fprintf(stderr, "Uninitialized attribute %s", "_module");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 302);
-      nit_exit(1);
+      nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_syntax_base, 300);
     }
-    fra.me.REG[4] = ATTR_syntax_base___AbsSyntaxVisitor____module(fra.me.REG[0]);
+    fra.me.REG[4] = ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0]);
     fra.me.REG[4] = CALL_abstractmetamodel___MMModule___location(fra.me.REG[4])(fra.me.REG[4]);
     REGB0 = TAG_Int(3);
     fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
@@ -1802,9 +1802,10 @@ val_t syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name(val_t p0, v
       once_value_1 = fra.me.REG[6];
       register_static_object(&once_value_1);
     } else fra.me.REG[6] = once_value_1;
-    array___Array___add(fra.me.REG[5], fra.me.REG[6]);
+    fra.me.REG[6] = fra.me.REG[6];
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
     fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
-    array___Array___add(fra.me.REG[5], fra.me.REG[6]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
     if (!once_value_2) {
       fra.me.REG[6] = BOX_NativeString("\"");
       REGB0 = TAG_Int(1);
@@ -1812,22 +1813,21 @@ val_t syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name(val_t p0, v
       once_value_2 = fra.me.REG[6];
       register_static_object(&once_value_2);
     } else fra.me.REG[6] = once_value_2;
-    array___Array___add(fra.me.REG[5], fra.me.REG[6]);
+    fra.me.REG[6] = fra.me.REG[6];
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
     fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
     CALL_mmloader___ToolContext___fatal_error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4], fra.me.REG[5]);
   }
-  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____module(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:303 */
+  /* ./syntax//syntax_base.nit:301 */
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_module");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 303);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_syntax_base, 301);
   }
-  fra.me.REG[0] = ATTR_syntax_base___AbsSyntaxVisitor____module(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0]);
   fra.me.REG[1] = CALL_abstractmetamodel___MMModule___class_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./syntax//syntax_base.nit:302 */
   fra.me.REG[2] = CALL_genericity___MMLocalClass___get_instantiate_type(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./syntax//syntax_base.nit:304 */
   goto label3;
   label3: while(0);
   stack_frame_head = fra.me.prev;
@@ -1841,14 +1841,14 @@ val_t syntax_base___AbsSyntaxVisitor___type_object(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_base;
-  fra.me.line = 307;
+  fra.me.line = 305;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___type_object;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//syntax_base.nit:310 */
+  /* ./syntax//syntax_base.nit:308 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Object");
@@ -1857,10 +1857,12 @@ val_t syntax_base___AbsSyntaxVisitor___type_object(val_t p0){
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
+    fra.me.REG[1] = fra.me.REG[1];
     fra.me.REG[1] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
+  fra.me.REG[1] = fra.me.REG[1];
   fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___get_type_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   goto label3;
   label3: while(0);
@@ -1875,14 +1877,14 @@ val_t syntax_base___AbsSyntaxVisitor___type_bool(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_base;
-  fra.me.line = 313;
+  fra.me.line = 311;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___type_bool;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//syntax_base.nit:316 */
+  /* ./syntax//syntax_base.nit:314 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Bool");
@@ -1891,10 +1893,12 @@ val_t syntax_base___AbsSyntaxVisitor___type_bool(val_t p0){
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
+    fra.me.REG[1] = fra.me.REG[1];
     fra.me.REG[1] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
+  fra.me.REG[1] = fra.me.REG[1];
   fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___get_type_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   goto label3;
   label3: while(0);
@@ -1909,14 +1913,14 @@ val_t syntax_base___AbsSyntaxVisitor___type_int(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_base;
-  fra.me.line = 319;
+  fra.me.line = 317;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___type_int;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//syntax_base.nit:322 */
+  /* ./syntax//syntax_base.nit:320 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Int");
@@ -1925,10 +1929,12 @@ val_t syntax_base___AbsSyntaxVisitor___type_int(val_t p0){
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
+    fra.me.REG[1] = fra.me.REG[1];
     fra.me.REG[1] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
+  fra.me.REG[1] = fra.me.REG[1];
   fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___get_type_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   goto label3;
   label3: while(0);
@@ -1943,14 +1949,14 @@ val_t syntax_base___AbsSyntaxVisitor___type_float(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_base;
-  fra.me.line = 325;
+  fra.me.line = 323;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___type_float;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//syntax_base.nit:328 */
+  /* ./syntax//syntax_base.nit:326 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Float");
@@ -1959,10 +1965,12 @@ val_t syntax_base___AbsSyntaxVisitor___type_float(val_t p0){
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
+    fra.me.REG[1] = fra.me.REG[1];
     fra.me.REG[1] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
+  fra.me.REG[1] = fra.me.REG[1];
   fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___get_type_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   goto label3;
   label3: while(0);
@@ -1977,14 +1985,14 @@ val_t syntax_base___AbsSyntaxVisitor___type_char(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_base;
-  fra.me.line = 331;
+  fra.me.line = 329;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___type_char;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//syntax_base.nit:334 */
+  /* ./syntax//syntax_base.nit:332 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Char");
@@ -1993,10 +2001,12 @@ val_t syntax_base___AbsSyntaxVisitor___type_char(val_t p0){
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
+    fra.me.REG[1] = fra.me.REG[1];
     fra.me.REG[1] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
+  fra.me.REG[1] = fra.me.REG[1];
   fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___get_type_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   goto label3;
   label3: while(0);
@@ -2011,14 +2021,14 @@ val_t syntax_base___AbsSyntaxVisitor___type_string(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_base;
-  fra.me.line = 337;
+  fra.me.line = 335;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___type_string;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//syntax_base.nit:340 */
+  /* ./syntax//syntax_base.nit:338 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("String");
@@ -2027,10 +2037,12 @@ val_t syntax_base___AbsSyntaxVisitor___type_string(val_t p0){
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
+    fra.me.REG[1] = fra.me.REG[1];
     fra.me.REG[1] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
+  fra.me.REG[1] = fra.me.REG[1];
   fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___get_type_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   goto label3;
   label3: while(0);
@@ -2045,7 +2057,7 @@ val_t syntax_base___AbsSyntaxVisitor___type_collection(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_base;
-  fra.me.line = 343;
+  fra.me.line = 341;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___type_collection;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2054,7 +2066,7 @@ val_t syntax_base___AbsSyntaxVisitor___type_collection(val_t p0){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//syntax_base.nit:346 */
+  /* ./syntax//syntax_base.nit:344 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Collection");
@@ -2063,15 +2075,17 @@ val_t syntax_base___AbsSyntaxVisitor___type_collection(val_t p0){
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
+    fra.me.REG[1] = fra.me.REG[1];
     fra.me.REG[1] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
+  fra.me.REG[1] = fra.me.REG[1];
   REGB0 = TAG_Int(1);
   fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB0);
   fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___type_object(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_static_type___MMType___as_nullable(fra.me.REG[3])(fra.me.REG[3]);
-  array___Array___add(fra.me.REG[2], fra.me.REG[3]);
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
   goto label3;
   label3: while(0);
@@ -2086,14 +2100,14 @@ val_t syntax_base___AbsSyntaxVisitor___type_nativestring(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_base;
-  fra.me.line = 349;
+  fra.me.line = 347;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___type_nativestring;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//syntax_base.nit:352 */
+  /* ./syntax//syntax_base.nit:350 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("NativeString");
@@ -2102,10 +2116,12 @@ val_t syntax_base___AbsSyntaxVisitor___type_nativestring(val_t p0){
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
+    fra.me.REG[1] = fra.me.REG[1];
     fra.me.REG[1] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
+  fra.me.REG[1] = fra.me.REG[1];
   fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___get_type_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   goto label3;
   label3: while(0);
@@ -2120,7 +2136,7 @@ val_t syntax_base___AbsSyntaxVisitor___type_array(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_base;
-  fra.me.line = 355;
+  fra.me.line = 353;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___type_array;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2130,7 +2146,7 @@ val_t syntax_base___AbsSyntaxVisitor___type_array(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//syntax_base.nit:358 */
+  /* ./syntax//syntax_base.nit:356 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[2] = BOX_NativeString("Array");
@@ -2139,13 +2155,15 @@ val_t syntax_base___AbsSyntaxVisitor___type_array(val_t p0, val_t p1){
       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];
     fra.me.REG[2] = CALL_symbol___String___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
+  fra.me.REG[2] = fra.me.REG[2];
   REGB0 = TAG_Int(1);
   fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
-  array___Array___add(fra.me.REG[3], fra.me.REG[1]);
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
   goto label3;
   label3: while(0);
@@ -2160,14 +2178,14 @@ val_t syntax_base___AbsSyntaxVisitor___type_discrete(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_base;
-  fra.me.line = 361;
+  fra.me.line = 359;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___type_discrete;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//syntax_base.nit:364 */
+  /* ./syntax//syntax_base.nit:362 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Discrete");
@@ -2176,10 +2194,12 @@ val_t syntax_base___AbsSyntaxVisitor___type_discrete(val_t p0){
       once_value_2 = fra.me.REG[1];
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
+    fra.me.REG[1] = fra.me.REG[1];
     fra.me.REG[1] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
+  fra.me.REG[1] = fra.me.REG[1];
   fra.me.REG[1] = CALL_syntax_base___AbsSyntaxVisitor___get_type_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   goto label3;
   label3: while(0);
@@ -2194,7 +2214,7 @@ val_t syntax_base___AbsSyntaxVisitor___type_range(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_base;
-  fra.me.line = 367;
+  fra.me.line = 365;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___type_range;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2204,7 +2224,7 @@ val_t syntax_base___AbsSyntaxVisitor___type_range(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//syntax_base.nit:370 */
+  /* ./syntax//syntax_base.nit:368 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[2] = BOX_NativeString("Range");
@@ -2213,13 +2233,15 @@ val_t syntax_base___AbsSyntaxVisitor___type_range(val_t p0, val_t p1){
       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];
     fra.me.REG[2] = CALL_symbol___String___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
     once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
+  fra.me.REG[2] = fra.me.REG[2];
   REGB0 = TAG_Int(1);
   fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB0);
-  array___Array___add(fra.me.REG[3], fra.me.REG[1]);
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___get_instantiated_type_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
   goto label3;
   label3: while(0);
@@ -2232,21 +2254,19 @@ val_t syntax_base___AbsSyntaxVisitor___type_none(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 373;
+  fra.me.line = 371;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___type_none;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____module(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:376 */
+  /* ./syntax//syntax_base.nit:374 */
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_module");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 376);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_syntax_base, 374);
   }
-  fra.me.REG[0] = ATTR_syntax_base___AbsSyntaxVisitor____module(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0]);
   fra.me.REG[0] = CALL_static_type___MMModule___type_none(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
   label1: while(0);
@@ -2262,7 +2282,7 @@ val_t syntax_base___AbsSyntaxVisitor___get_method(val_t p0, val_t p1, val_t p2){
     static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 379;
+  fra.me.line = 377;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___get_method;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -2275,15 +2295,15 @@ val_t syntax_base___AbsSyntaxVisitor___get_method(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//syntax_base.nit:379 */
   fra.me.REG[3] = CALL_static_type___MMType___local_class(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  /* ./syntax//syntax_base.nit:381 */
   if (UNTAG_Bool(REGB0)) {
+    /* ./syntax//syntax_base.nit:380 */
     fra.me.REG[3] = CALL_parser_prod___Visitor___current_node(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
-    /* ./syntax//syntax_base.nit:382 */
     if (!once_value_1) {
       fra.me.REG[5] = BOX_NativeString("Fatal Error: ");
       REGB0 = TAG_Int(13);
@@ -2291,9 +2311,10 @@ val_t syntax_base___AbsSyntaxVisitor___get_method(val_t p0, val_t p1, val_t p2){
       once_value_1 = fra.me.REG[5];
       register_static_object(&once_value_1);
     } else fra.me.REG[5] = once_value_1;
-    array___Array___add(fra.me.REG[4], fra.me.REG[5]);
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
-    array___Array___add(fra.me.REG[4], fra.me.REG[5]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString(" must have a property named ");
       REGB0 = TAG_Int(28);
@@ -2301,9 +2322,10 @@ val_t syntax_base___AbsSyntaxVisitor___get_method(val_t p0, val_t p1, val_t p2){
       once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
     } else fra.me.REG[5] = once_value_2;
-    array___Array___add(fra.me.REG[4], fra.me.REG[5]);
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-    array___Array___add(fra.me.REG[4], fra.me.REG[5]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     if (!once_value_3) {
       fra.me.REG[5] = BOX_NativeString(".");
       REGB0 = TAG_Int(1);
@@ -2311,39 +2333,38 @@ val_t syntax_base___AbsSyntaxVisitor___get_method(val_t p0, val_t p1, val_t p2){
       once_value_3 = fra.me.REG[5];
       register_static_object(&once_value_3);
     } else fra.me.REG[5] = once_value_3;
-    array___Array___add(fra.me.REG[4], fra.me.REG[5]);
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_syntax_base___AbsSyntaxVisitor___fatal_error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[4]);
   }
+  /* ./syntax//syntax_base.nit:382 */
   fra.me.REG[1] = CALL_static_type___MMType___local_class(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[2] = CALL_abstractmetamodel___MMLocalClass___select_method(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./syntax//syntax_base.nit:384 */
   goto label4;
   label4: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-val_t syntax_base___AbsSyntaxVisitor___module(val_t p0){
+val_t syntax_base___AbsSyntaxVisitor___mmmodule(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 387;
-  fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___module;
+  fra.me.line = 385;
+  fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___mmmodule;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____module(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:387 */
+  /* ./syntax//syntax_base.nit:385 */
+  REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_module");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 387);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_syntax_base, 385);
   }
-  fra.me.REG[0] = ATTR_syntax_base___AbsSyntaxVisitor____module(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
@@ -2353,20 +2374,18 @@ val_t syntax_base___AbsSyntaxVisitor___local_class(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 390;
+  fra.me.line = 388;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___local_class;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:389 */
   fra.me.REG[0] = ATTR_syntax_base___AbsSyntaxVisitor____local_class(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:391 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Cast failed");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 391);
-    nit_exit(1);
+    nit_abort("Cast failed", NULL, LOCATE_syntax_base, 389);
   }
   goto label1;
   label1: while(0);
@@ -2378,7 +2397,7 @@ void syntax_base___AbsSyntaxVisitor___local_class__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_base;
-  fra.me.line = 392;
+  fra.me.line = 390;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___local_class__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2386,7 +2405,7 @@ void syntax_base___AbsSyntaxVisitor___local_class__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//syntax_base.nit:392 */
+  /* ./syntax//syntax_base.nit:390 */
   ATTR_syntax_base___AbsSyntaxVisitor____local_class(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2397,20 +2416,18 @@ val_t syntax_base___AbsSyntaxVisitor___local_property(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 394;
+  fra.me.line = 392;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___local_property;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:393 */
   fra.me.REG[0] = ATTR_syntax_base___AbsSyntaxVisitor____local_property(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:395 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Cast failed");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 395);
-    nit_exit(1);
+    nit_abort("Cast failed", NULL, LOCATE_syntax_base, 393);
   }
   goto label1;
   label1: while(0);
@@ -2422,7 +2439,7 @@ void syntax_base___AbsSyntaxVisitor___local_property__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_base;
-  fra.me.line = 396;
+  fra.me.line = 394;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___local_property__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2430,7 +2447,7 @@ void syntax_base___AbsSyntaxVisitor___local_property__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//syntax_base.nit:396 */
+  /* ./syntax//syntax_base.nit:394 */
   ATTR_syntax_base___AbsSyntaxVisitor____local_property(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2441,19 +2458,17 @@ val_t syntax_base___AbsSyntaxVisitor___tc(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 398;
+  fra.me.line = 396;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___tc;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:396 */
   REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:398 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_tc");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 398);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_syntax_base, 396);
   }
   fra.me.REG[0] = ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2466,7 +2481,7 @@ void syntax_base___AbsSyntaxVisitor___error(val_t p0, val_t p1, val_t p2){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 401;
+  fra.me.line = 399;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___error;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2477,13 +2492,11 @@ void syntax_base___AbsSyntaxVisitor___error(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./syntax//syntax_base.nit:402 */
   REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:404 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_tc");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 404);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_syntax_base, 402);
   }
   fra.me.REG[0] = ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
@@ -2503,9 +2516,7 @@ void syntax_base___AbsSyntaxVisitor___error(val_t p0, val_t p1, val_t p2){
   } else {
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      fprintf(stderr, "Reciever is null");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 404);
-      nit_exit(1);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 402);
     }
     fra.me.REG[1] = CALL_parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[3] = fra.me.REG[1];
@@ -2521,7 +2532,7 @@ void syntax_base___AbsSyntaxVisitor___fatal_error(val_t p0, val_t p1, val_t p2){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 407;
+  fra.me.line = 405;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___fatal_error;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2532,13 +2543,11 @@ void syntax_base___AbsSyntaxVisitor___fatal_error(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./syntax//syntax_base.nit:408 */
   REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:410 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_tc");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 410);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_syntax_base, 408);
   }
   fra.me.REG[0] = ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
@@ -2558,9 +2567,7 @@ void syntax_base___AbsSyntaxVisitor___fatal_error(val_t p0, val_t p1, val_t p2){
   } else {
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      fprintf(stderr, "Reciever is null");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 410);
-      nit_exit(1);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 408);
     }
     fra.me.REG[1] = CALL_parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[3] = fra.me.REG[1];
@@ -2576,7 +2583,7 @@ void syntax_base___AbsSyntaxVisitor___warning(val_t p0, val_t p1, val_t p2){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 413;
+  fra.me.line = 411;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___warning;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2587,13 +2594,11 @@ void syntax_base___AbsSyntaxVisitor___warning(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./syntax//syntax_base.nit:414 */
   REGB0 = TAG_Bool(ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:416 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_tc");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 416);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_tc", LOCATE_syntax_base, 414);
   }
   fra.me.REG[0] = ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
@@ -2613,9 +2618,7 @@ void syntax_base___AbsSyntaxVisitor___warning(val_t p0, val_t p1, val_t p2){
   } else {
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      fprintf(stderr, "Reciever is null");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 416);
-      nit_exit(1);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 414);
     }
     fra.me.REG[1] = CALL_parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[3] = fra.me.REG[1];
@@ -2635,7 +2638,7 @@ val_t syntax_base___AbsSyntaxVisitor___check_conform(val_t p0, val_t p1, val_t p
   static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 419;
+  fra.me.line = 417;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___check_conform;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -2649,8 +2652,8 @@ val_t syntax_base___AbsSyntaxVisitor___check_conform(val_t p0, val_t p1, val_t p
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./syntax//syntax_base.nit:420 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-  /* ./syntax//syntax_base.nit:422 */
   if (UNTAG_Bool(REGB0)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
@@ -2680,27 +2683,25 @@ val_t syntax_base___AbsSyntaxVisitor___check_conform(val_t p0, val_t p1, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
+    /* ./syntax//syntax_base.nit:421 */
     REGB0 = TAG_Bool(false);
-    /* ./syntax//syntax_base.nit:423 */
     goto label1;
   }
+  /* ./syntax//syntax_base.nit:423 */
   REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-  /* ./syntax//syntax_base.nit:425 */
   if (UNTAG_Bool(REGB1)) {
-    fprintf(stderr, "Reciever is null");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 425);
-    nit_exit(1);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 423);
   }
   REGB1 = CALL_static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   if (UNTAG_Bool(REGB1)) {
+    /* ./syntax//syntax_base.nit:424 */
     REGB1 = TAG_Bool(true);
     REGB0 = REGB1;
-    /* ./syntax//syntax_base.nit:426 */
     goto label1;
   }
+  /* ./syntax//syntax_base.nit:426 */
   REGB1 = TAG_Int(5);
   fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB1);
-  /* ./syntax//syntax_base.nit:428 */
   if (!once_value_2) {
     fra.me.REG[5] = BOX_NativeString("Type error: expected ");
     REGB1 = TAG_Int(21);
@@ -2708,9 +2709,10 @@ val_t syntax_base___AbsSyntaxVisitor___check_conform(val_t p0, val_t p1, val_t p
     once_value_2 = fra.me.REG[5];
     register_static_object(&once_value_2);
   } else fra.me.REG[5] = once_value_2;
-  array___Array___add(fra.me.REG[4], fra.me.REG[5]);
+  fra.me.REG[5] = fra.me.REG[5];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-  array___Array___add(fra.me.REG[4], fra.me.REG[3]);
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString(", got ");
     REGB1 = TAG_Int(6);
@@ -2718,9 +2720,10 @@ val_t syntax_base___AbsSyntaxVisitor___check_conform(val_t p0, val_t p1, val_t p
     once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
   } else fra.me.REG[3] = once_value_3;
-  array___Array___add(fra.me.REG[4], fra.me.REG[3]);
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-  array___Array___add(fra.me.REG[4], fra.me.REG[2]);
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
@@ -2728,12 +2731,13 @@ val_t syntax_base___AbsSyntaxVisitor___check_conform(val_t p0, val_t p1, val_t p
     once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
-  array___Array___add(fra.me.REG[4], fra.me.REG[2]);
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
   fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
   CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
+  /* ./syntax//syntax_base.nit:427 */
   REGB1 = TAG_Bool(false);
   REGB0 = REGB1;
-  /* ./syntax//syntax_base.nit:429 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -2750,7 +2754,7 @@ val_t syntax_base___AbsSyntaxVisitor___check_expr(val_t p0, val_t p1){
       static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 432;
+  fra.me.line = 430;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___check_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2760,25 +2764,26 @@ val_t syntax_base___AbsSyntaxVisitor___check_expr(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./syntax//syntax_base.nit:435 */
   REGB0 = CALL_syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  /* ./syntax//syntax_base.nit:437 */
   if (UNTAG_Bool(REGB0)) {
+    /* ./syntax//syntax_base.nit:436 */
     fra.me.REG[2] = CALL_syntax_base___AbsSyntaxVisitor___tc(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = CALL_mmloader___ToolContext___error_count(fra.me.REG[2])(fra.me.REG[2]);
     REGB1 = TAG_Int(0);
     REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
-    /* ./syntax//syntax_base.nit:438 */
     if (UNTAG_Bool(REGB2)) {
     } else {
+      /* ./../lib/standard//kernel.nit:207 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
+      /* ./syntax//syntax_base.nit:436 */
       REGB2 = REGB1;
-    /* ./syntax//syntax_base.nit:438 */
     }
     if (UNTAG_Bool(REGB2)) {
+      /* ./syntax//syntax_base.nit:437 */
       REGB2 = TAG_Int(3);
       fra.me.REG[2] = NEW_Array_array___Array___with_capacity(REGB2);
-      /* ./syntax//syntax_base.nit:439 */
       if (!once_value_1) {
         fra.me.REG[3] = BOX_NativeString("");
         REGB2 = TAG_Int(0);
@@ -2786,10 +2791,11 @@ val_t syntax_base___AbsSyntaxVisitor___check_expr(val_t p0, val_t p1){
         once_value_1 = fra.me.REG[3];
         register_static_object(&once_value_1);
       } else fra.me.REG[3] = once_value_1;
-      array___Array___add(fra.me.REG[2], fra.me.REG[3]);
+      fra.me.REG[3] = fra.me.REG[3];
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
       fra.me.REG[3] = CALL_parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-      array___Array___add(fra.me.REG[2], fra.me.REG[3]);
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
       if (!once_value_2) {
         fra.me.REG[3] = BOX_NativeString(" not typed but not error");
         REGB2 = TAG_Int(24);
@@ -2797,22 +2803,21 @@ val_t syntax_base___AbsSyntaxVisitor___check_expr(val_t p0, val_t p1){
         once_value_2 = fra.me.REG[3];
         register_static_object(&once_value_2);
       } else fra.me.REG[3] = once_value_2;
-      array___Array___add(fra.me.REG[2], fra.me.REG[3]);
+      fra.me.REG[3] = fra.me.REG[3];
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
       fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
       CALL_file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-      /* ./syntax//syntax_base.nit:440 */
-      fprintf(stderr, "Aborted");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 440);
-      nit_exit(1);
+      /* ./syntax//syntax_base.nit:438 */
+      nit_abort("Aborted", NULL, LOCATE_syntax_base, 438);
     }
+    /* ./syntax//syntax_base.nit:442 */
     REGB2 = TAG_Bool(false);
-    /* ./syntax//syntax_base.nit:444 */
     goto label3;
   } else {
+    /* ./syntax//syntax_base.nit:443 */
     REGB1 = CALL_syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./syntax//syntax_base.nit:445 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./syntax//syntax_base.nit:446 */
+      /* ./syntax//syntax_base.nit:444 */
       if (!once_value_4) {
         fra.me.REG[2] = BOX_NativeString("Type error: expected expression.");
         REGB1 = TAG_Int(32);
@@ -2820,16 +2825,17 @@ val_t syntax_base___AbsSyntaxVisitor___check_expr(val_t p0, val_t p1){
         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_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
+      /* ./syntax//syntax_base.nit:445 */
       REGB1 = TAG_Bool(false);
       REGB2 = REGB1;
-      /* ./syntax//syntax_base.nit:447 */
       goto label3;
     }
   }
+  /* ./syntax//syntax_base.nit:447 */
   REGB1 = TAG_Bool(true);
   REGB2 = REGB1;
-  /* ./syntax//syntax_base.nit:449 */
   goto label3;
   label3: while(0);
   stack_frame_head = fra.me.prev;
@@ -2842,7 +2848,7 @@ val_t syntax_base___AbsSyntaxVisitor___check_conform_expr(val_t p0, val_t p1, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 452;
+  fra.me.line = 450;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___check_conform_expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2853,8 +2859,8 @@ val_t syntax_base___AbsSyntaxVisitor___check_conform_expr(val_t p0, val_t p1, va
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./syntax//syntax_base.nit:453 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-  /* ./syntax//syntax_base.nit:455 */
   if (UNTAG_Bool(REGB0)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
@@ -2870,8 +2876,8 @@ val_t syntax_base___AbsSyntaxVisitor___check_conform_expr(val_t p0, val_t p1, va
     REGB0 = TAG_Bool(false);
     goto label1;
   }
+  /* ./syntax//syntax_base.nit:454 */
   REGB1 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//syntax_base.nit:456 */
   if (UNTAG_Bool(REGB1)) {
     fra.me.REG[3] = CALL_syntax_base___AExpr___stype(fra.me.REG[1])(fra.me.REG[1]);
     REGB1 = CALL_syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
@@ -2887,275 +2893,320 @@ val_t syntax_base___AbsSyntaxVisitor___check_conform_expr(val_t p0, val_t p1, va
   return REGB0;
 }
 val_t syntax_base___AbsSyntaxVisitor___check_conform_multiexpr(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
-  val_t REGB2;
   val_t tmp;
-          static val_t once_value_3; /* Once value */
-          static val_t once_value_4; /* Once value */
-          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 */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 459;
+  fra.me.line = 457;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___check_conform_multiexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 9;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
-  fra.me.REG[5] = NIT_NULL;
-  fra.me.REG[6] = NIT_NULL;
-  fra.me.REG[7] = NIT_NULL;
-  fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./syntax//syntax_base.nit:469 */
   fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[4] = CALL_abstract_collection___Collection___iterator(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//syntax_base.nit:472 */
-  while(1) {
-    REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[4])(fra.me.REG[4]);
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_syntax_base___AbsSyntaxVisitor___check_conform_multiexpr_1));
+  switch ((&(fra.me))->has_broke) {
+    case 0: break;
+    case 1: (&(fra.me))->has_broke = 0; goto label3;
+  }
+  /* ./syntax//syntax_base.nit:483 */
+  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_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)) {
+  } else {
+    nit_abort("Assert failed", NULL, LOCATE_syntax_base, 483);
+  }
+  CALL_abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_syntax_base___AbsSyntaxVisitor___check_conform_multiexpr_4));
+  switch ((&(fra.me))->has_broke) {
+    case 0: break;
+    case 1: (&(fra.me))->has_broke = 0; goto label3;
+  }
+  /* ./syntax//syntax_base.nit:494 */
+  fra.me.REG[4] = fra.me.REG[1];
+  goto label3;
+  label3: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[4];
+}
+  void OC_syntax_base___AbsSyntaxVisitor___check_conform_multiexpr_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+    val_t REGB0;
+    val_t REGB1;
+    val_t REGB2;
+    fun_t CREG[1];
+    val_t tmp;
+    /* ./syntax//syntax_base.nit:470 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_syntax_base;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___check_conform_multiexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 3;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.REG[2] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./syntax//syntax_base.nit:471 */
+    REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      fra.me.REG[5] = CALL_abstract_collection___Iterator___item(fra.me.REG[4])(fra.me.REG[4]);
-      REGB0 = CALL_syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
-      REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-      /* ./syntax//syntax_base.nit:473 */
-      if (UNTAG_Bool(REGB0)) {
-        fra.me.REG[6] = NIT_NULL;
-        goto label1;
-      }
-      fra.me.REG[7] = CALL_syntax_base___AExpr___stype(fra.me.REG[5])(fra.me.REG[5]);
-      REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-      /* ./syntax//syntax_base.nit:475 */
-      if (UNTAG_Bool(REGB0)) {
+      closctx->REG[4] = NIT_NULL;
+      closctx->has_broke = 1;
+      goto label2;
+    }
+    /* ./syntax//syntax_base.nit:472 */
+    fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
+    /* ./syntax//syntax_base.nit:473 */
+    REGB0 = TAG_Bool(closctx->REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(closctx->REG[1]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
       } else {
-        REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-        if (UNTAG_Bool(REGB1)) {
-          REGB1 = TAG_Bool(false);
-          REGB0 = REGB1;
-        } else {
-          REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
-          REGB0 = REGB1;
-        }
+        REGB1 = CALL_kernel___Object_____eqeq(closctx->REG[1])(closctx->REG[1], NIT_NULL);
+        REGB0 = REGB1;
       }
-      REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      REGB0 = TAG_Bool(closctx->REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-        if (UNTAG_Bool(REGB0)) {
-          fprintf(stderr, "Reciever is null");
-          fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 475);
-          nit_exit(1);
-        }
-        REGB0 = CALL_static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
-        REGB1 = CALL_static_type___MMType___is_nullable(fra.me.REG[7])(fra.me.REG[7]);
-        REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
-        if (UNTAG_Bool(REGB2)) {
-        } else {
-          REGB1 = TAG_Bool((REGB0)==(REGB1));
-          REGB2 = REGB1;
-        /* ./syntax//syntax_base.nit:475 */
-        }
-        REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
-      } else {
-        REGB1 = TAG_Bool(false);
-        REGB2 = REGB1;
+        nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 473);
       }
-      if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-        /* ./syntax//syntax_base.nit:477 */
-        if (UNTAG_Bool(REGB2)) {
-          fprintf(stderr, "Reciever is null");
-          fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 477);
-          nit_exit(1);
-        }
-        fra.me.REG[8] = CALL_static_type___MMType___as_nullable(fra.me.REG[1])(fra.me.REG[1]);
-        fra.me.REG[1] = fra.me.REG[8];
-        fra.me.REG[8] = CALL_static_type___MMType___as_nullable(fra.me.REG[7])(fra.me.REG[7]);
-        fra.me.REG[7] = fra.me.REG[8];
-      /* ./syntax//syntax_base.nit:478 */
-      }
-      REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-      /* ./syntax//syntax_base.nit:480 */
+      REGB0 = CALL_static_type___MMType___is_nullable(closctx->REG[1])(closctx->REG[1]);
+      REGB1 = CALL_static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
+      REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
       if (UNTAG_Bool(REGB2)) {
       } else {
-        REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-        if (UNTAG_Bool(REGB1)) {
-          REGB1 = TAG_Bool(false);
-          REGB2 = REGB1;
-        } else {
-          REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
-          REGB2 = REGB1;
-        }
+        /* ./../lib/standard//kernel.nit:175 */
+        REGB1 = TAG_Bool((REGB0)==(REGB1));
+        /* ./syntax//syntax_base.nit:473 */
+        REGB2 = REGB1;
       }
+      REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
+    } else {
+      REGB1 = TAG_Bool(false);
+      REGB2 = REGB1;
+    }
+    if (UNTAG_Bool(REGB2)) {
+      /* ./syntax//syntax_base.nit:475 */
+      REGB2 = TAG_Bool(closctx->REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(true);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 475);
+      }
+      fra.me.REG[2] = CALL_static_type___MMType___as_nullable(closctx->REG[1])(closctx->REG[1]);
+      closctx->REG[1] = fra.me.REG[2];
+      /* ./syntax//syntax_base.nit:476 */
+      fra.me.REG[2] = CALL_static_type___MMType___as_nullable(fra.me.REG[1])(fra.me.REG[1]);
+      fra.me.REG[1] = fra.me.REG[2];
+    }
+    /* ./syntax//syntax_base.nit:478 */
+    REGB2 = TAG_Bool(closctx->REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      REGB1 = TAG_Bool(closctx->REG[1]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB2 = REGB1;
       } else {
-        REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-        if (UNTAG_Bool(REGB1)) {
-          fprintf(stderr, "Reciever is null");
-          fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 480);
-          nit_exit(1);
-        }
-        REGB1 = CALL_static_type___MMType_____l(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
+        REGB1 = CALL_kernel___Object_____eqeq(closctx->REG[1])(closctx->REG[1], NIT_NULL);
         REGB2 = REGB1;
       }
-      if (UNTAG_Bool(REGB2)) {
-        fra.me.REG[1] = fra.me.REG[7];
-        fra.me.REG[3] = fra.me.REG[5];
-      /* ./syntax//syntax_base.nit:482 */
-      }
+    }
+    if (UNTAG_Bool(REGB2)) {
+      REGB2 = TAG_Bool(true);
     } else {
-      /* ./syntax//syntax_base.nit:472 */
-      goto label2;
+      REGB1 = TAG_Bool(closctx->REG[1]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 478);
+      }
+      REGB1 = CALL_static_type___MMType_____l(closctx->REG[1])(closctx->REG[1], fra.me.REG[1]);
+      REGB2 = REGB1;
     }
-    CALL_abstract_collection___Iterator___next(fra.me.REG[4])(fra.me.REG[4]);
-  }
-  label2: while(0);
-  fra.me.REG[2] = CALL_abstract_collection___Collection___iterator(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//syntax_base.nit:485 */
-  while(1) {
-    REGB2 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
     if (UNTAG_Bool(REGB2)) {
-      fra.me.REG[4] = CALL_abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
-      fra.me.REG[5] = CALL_syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
-      REGB2 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+      /* ./syntax//syntax_base.nit:479 */
+      closctx->REG[1] = fra.me.REG[1];
+      /* ./syntax//syntax_base.nit:480 */
+      closctx->REG[3] = fra.me.REG[0];
+    }
+    label2: while(0);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
+  void OC_syntax_base___AbsSyntaxVisitor___check_conform_multiexpr_4(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+    val_t REGB0;
+    val_t REGB1;
+    fun_t CREG[1];
+    val_t tmp;
+        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 */
+    /* ./syntax//syntax_base.nit:484 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_syntax_base;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___check_conform_multiexpr;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 4;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.REG[2] = NIT_NULL;
+    fra.me.REG[3] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./syntax//syntax_base.nit:485 */
+    fra.me.REG[1] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
+    REGB0 = CALL_static_type___MMType_____l(fra.me.REG[1])(fra.me.REG[1], closctx->REG[1]);
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
       /* ./syntax//syntax_base.nit:486 */
-      if (UNTAG_Bool(REGB2)) {
+      REGB0 = TAG_Bool(closctx->REG[3]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
       } else {
-        fprintf(stderr, "Cast failed");
-        fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 486);
-        nit_exit(1);
-      }
-      REGB2 = CALL_static_type___MMType_____l(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
-      REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
-      if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        /* ./syntax//syntax_base.nit:487 */
-        if (UNTAG_Bool(REGB2)) {
+        REGB1 = TAG_Bool(closctx->REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
+          REGB1 = TAG_Bool(false);
+          REGB0 = REGB1;
         } else {
-          REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-          if (UNTAG_Bool(REGB1)) {
-            REGB1 = TAG_Bool(false);
-            REGB2 = REGB1;
-          } else {
-            REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
-            REGB2 = REGB1;
-          }
+          REGB1 = CALL_kernel___Object_____eqeq(closctx->REG[3])(closctx->REG[3], NIT_NULL);
+          REGB0 = REGB1;
         }
-        if (UNTAG_Bool(REGB2)) {
-          REGB2 = TAG_Int(5);
-          fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB2);
-          /* ./syntax//syntax_base.nit:488 */
-          if (!once_value_3) {
-            fra.me.REG[7] = BOX_NativeString("Type error: no most general type. Got ");
-            REGB2 = TAG_Int(38);
-            fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
-            once_value_3 = fra.me.REG[7];
-            register_static_object(&once_value_3);
-          } else fra.me.REG[7] = once_value_3;
-          array___Array___add(fra.me.REG[5], fra.me.REG[7]);
-          fra.me.REG[7] = CALL_syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
-          fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
-          array___Array___add(fra.me.REG[5], fra.me.REG[7]);
-          if (!once_value_4) {
-            fra.me.REG[7] = BOX_NativeString(" and ");
-            REGB2 = TAG_Int(5);
-            fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
-            once_value_4 = fra.me.REG[7];
-            register_static_object(&once_value_4);
-          } else fra.me.REG[7] = once_value_4;
-          array___Array___add(fra.me.REG[5], fra.me.REG[7]);
-          fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
-          array___Array___add(fra.me.REG[5], fra.me.REG[7]);
-          if (!once_value_5) {
-            fra.me.REG[7] = BOX_NativeString(".");
-            REGB2 = TAG_Int(1);
-            fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
-            once_value_5 = fra.me.REG[7];
-            register_static_object(&once_value_5);
-          } else fra.me.REG[7] = once_value_5;
-          array___Array___add(fra.me.REG[5], fra.me.REG[7]);
-          fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-          CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[5]);
-        } else {
-          REGB2 = TAG_Int(7);
-          fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB2);
-          /* ./syntax//syntax_base.nit:490 */
-          if (!once_value_6) {
-            fra.me.REG[7] = BOX_NativeString("Type error: no most general type. Got ");
-            REGB2 = TAG_Int(38);
-            fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
-            once_value_6 = fra.me.REG[7];
-            register_static_object(&once_value_6);
-          } else fra.me.REG[7] = once_value_6;
-          array___Array___add(fra.me.REG[5], fra.me.REG[7]);
-          fra.me.REG[7] = CALL_syntax_base___AExpr___stype(fra.me.REG[4])(fra.me.REG[4]);
-          fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
-          array___Array___add(fra.me.REG[5], fra.me.REG[7]);
-          if (!once_value_7) {
-            fra.me.REG[7] = BOX_NativeString(" and ");
-            REGB2 = TAG_Int(5);
-            fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
-            once_value_7 = fra.me.REG[7];
-            register_static_object(&once_value_7);
-          } else fra.me.REG[7] = once_value_7;
-          array___Array___add(fra.me.REG[5], fra.me.REG[7]);
-          fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
-          array___Array___add(fra.me.REG[5], fra.me.REG[7]);
-          if (!once_value_8) {
-            fra.me.REG[7] = BOX_NativeString(" at ");
-            REGB2 = TAG_Int(4);
-            fra.me.REG[7] = NEW_String_string___String___with_native(fra.me.REG[7], REGB2);
-            once_value_8 = fra.me.REG[7];
-            register_static_object(&once_value_8);
-          } else fra.me.REG[7] = once_value_8;
-          array___Array___add(fra.me.REG[5], fra.me.REG[7]);
-          REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-          if (UNTAG_Bool(REGB2)) {
-            fprintf(stderr, "Reciever is null");
-            fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 490);
-            nit_exit(1);
-          }
-          fra.me.REG[7] = CALL_parser_nodes___ANode___location(fra.me.REG[3])(fra.me.REG[3]);
-          fra.me.REG[8] = CALL_parser_nodes___ANode___location(fra.me.REG[4])(fra.me.REG[4]);
-          fra.me.REG[8] = CALL_location___Location___relative_to(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
-          array___Array___add(fra.me.REG[5], fra.me.REG[8]);
-          if (!once_value_9) {
-            fra.me.REG[8] = BOX_NativeString(".");
-            REGB2 = TAG_Int(1);
-            fra.me.REG[8] = NEW_String_string___String___with_native(fra.me.REG[8], REGB2);
-            once_value_9 = fra.me.REG[8];
-            register_static_object(&once_value_9);
-          } else fra.me.REG[8] = once_value_9;
-          array___Array___add(fra.me.REG[5], fra.me.REG[8]);
-          fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-          CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[5]);
+      }
+      if (UNTAG_Bool(REGB0)) {
+        /* ./syntax//syntax_base.nit:487 */
+        REGB0 = TAG_Int(5);
+        fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+        if (!once_value_5) {
+          fra.me.REG[2] = BOX_NativeString("Type error: no most general type. Got ");
+          REGB0 = TAG_Int(38);
+          fra.me.REG[2] = NEW_String_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];
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+        fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
+        fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+        if (!once_value_6) {
+          fra.me.REG[2] = BOX_NativeString(" and ");
+          REGB0 = TAG_Int(5);
+          fra.me.REG[2] = NEW_String_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_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+        fra.me.REG[2] = CALL_string___Object___to_s(closctx->REG[1])(closctx->REG[1]);
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+        if (!once_value_7) {
+          fra.me.REG[2] = BOX_NativeString(".");
+          REGB0 = TAG_Int(1);
+          fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+          once_value_7 = fra.me.REG[2];
+          register_static_object(&once_value_7);
+        } else fra.me.REG[2] = once_value_7;
+        fra.me.REG[2] = fra.me.REG[2];
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+        fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+        CALL_syntax_base___AbsSyntaxVisitor___error(closctx->REG[0])(closctx->REG[0], fra.me.REG[0], fra.me.REG[1]);
+      } else {
+        /* ./syntax//syntax_base.nit:489 */
+        REGB0 = TAG_Int(7);
+        fra.me.REG[1] = NEW_Array_array___Array___with_capacity(REGB0);
+        if (!once_value_8) {
+          fra.me.REG[2] = BOX_NativeString("Type error: no most general type. Got ");
+          REGB0 = TAG_Int(38);
+          fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+          once_value_8 = fra.me.REG[2];
+          register_static_object(&once_value_8);
+        } else fra.me.REG[2] = once_value_8;
+        fra.me.REG[2] = fra.me.REG[2];
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+        fra.me.REG[2] = CALL_syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
+        fra.me.REG[2] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+        if (!once_value_9) {
+          fra.me.REG[2] = BOX_NativeString(" and ");
+          REGB0 = TAG_Int(5);
+          fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+          once_value_9 = fra.me.REG[2];
+          register_static_object(&once_value_9);
+        } else fra.me.REG[2] = once_value_9;
+        fra.me.REG[2] = fra.me.REG[2];
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+        fra.me.REG[2] = CALL_string___Object___to_s(closctx->REG[1])(closctx->REG[1]);
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+        if (!once_value_10) {
+          fra.me.REG[2] = BOX_NativeString(" at ");
+          REGB0 = TAG_Int(4);
+          fra.me.REG[2] = NEW_String_string___String___with_native(fra.me.REG[2], REGB0);
+          once_value_10 = fra.me.REG[2];
+          register_static_object(&once_value_10);
+        } else fra.me.REG[2] = once_value_10;
+        fra.me.REG[2] = fra.me.REG[2];
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+        REGB0 = TAG_Bool(closctx->REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+          nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 489);
         }
-        fra.me.REG[6] = NIT_NULL;
-        /* ./syntax//syntax_base.nit:492 */
-        goto label1;
+        fra.me.REG[2] = CALL_parser_nodes___ANode___location(closctx->REG[3])(closctx->REG[3]);
+        fra.me.REG[3] = CALL_parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
+        fra.me.REG[3] = CALL_location___Location___relative_to(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+        if (!once_value_11) {
+          fra.me.REG[3] = BOX_NativeString(".");
+          REGB0 = TAG_Int(1);
+          fra.me.REG[3] = NEW_String_string___String___with_native(fra.me.REG[3], REGB0);
+          once_value_11 = fra.me.REG[3];
+          register_static_object(&once_value_11);
+        } else fra.me.REG[3] = once_value_11;
+        fra.me.REG[3] = fra.me.REG[3];
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+        fra.me.REG[1] = CALL_string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+        CALL_syntax_base___AbsSyntaxVisitor___error(closctx->REG[0])(closctx->REG[0], fra.me.REG[0], fra.me.REG[1]);
       }
-    } else {
-      /* ./syntax//syntax_base.nit:485 */
-      goto label10;
+      /* ./syntax//syntax_base.nit:491 */
+      closctx->REG[4] = NIT_NULL;
+      closctx->has_broke = 1;
+      goto label12;
     }
-    CALL_abstract_collection___Iterator___next(fra.me.REG[2])(fra.me.REG[2]);
+    label12: while(0);
+    stack_frame_head = fra.me.prev;
+    return;
   }
-  label10: while(0);
-  fra.me.REG[6] = fra.me.REG[1];
-  /* ./syntax//syntax_base.nit:495 */
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[6];
-}
 void syntax_base___AbsSyntaxVisitor___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos14 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_AbsSyntaxVisitor].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -3163,7 +3214,7 @@ void syntax_base___AbsSyntaxVisitor___init(val_t p0, val_t p1, val_t p2, int* in
   if (init_table[itpos14]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 498;
+  fra.me.line = 497;
   fra.me.meth = LOCATE_syntax_base___AbsSyntaxVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3174,13 +3225,13 @@ void syntax_base___AbsSyntaxVisitor___init(val_t p0, val_t p1, val_t p2, int* in
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./syntax//syntax_base.nit:497 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* ./syntax//syntax_base.nit:498 */
   CALL_parser_prod___Visitor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./syntax//syntax_base.nit:500 */
+  /* ./syntax//syntax_base.nit:499 */
   ATTR_syntax_base___AbsSyntaxVisitor____tc(fra.me.REG[3]) = fra.me.REG[1];
-  /* ./syntax//syntax_base.nit:501 */
-  ATTR_syntax_base___AbsSyntaxVisitor____module(fra.me.REG[3]) = fra.me.REG[2];
+  /* ./syntax//syntax_base.nit:500 */
+  ATTR_syntax_base___AbsSyntaxVisitor____mmmodule(fra.me.REG[3]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
   init_table[itpos14] = 1;
   return;
@@ -3190,7 +3241,7 @@ void syntax_base___ANode___accept_abs_syntax_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_base;
-  fra.me.line = 508;
+  fra.me.line = 507;
   fra.me.meth = LOCATE_syntax_base___ANode___accept_abs_syntax_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3198,7 +3249,7 @@ void syntax_base___ANode___accept_abs_syntax_visitor(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//syntax_base.nit:508 */
+  /* ./syntax//syntax_base.nit:507 */
   CALL_parser_prod___ANode___visit_all(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -3210,7 +3261,7 @@ val_t syntax_base___Token___to_symbol(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 514;
+  fra.me.line = 513;
   fra.me.meth = LOCATE_syntax_base___Token___to_symbol;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -3218,9 +3269,10 @@ val_t syntax_base___Token___to_symbol(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:517 */
   fra.me.REG[1] = ATTR_syntax_base___Token____symbol_cache(fra.me.REG[0]);
+  /* ./syntax//syntax_base.nit:518 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-  /* ./syntax//syntax_base.nit:519 */
   if (UNTAG_Bool(REGB0)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
@@ -3233,13 +3285,14 @@ val_t syntax_base___Token___to_symbol(val_t p0){
     }
   }
   if (UNTAG_Bool(REGB0)) {
+    /* ./syntax//syntax_base.nit:519 */
     fra.me.REG[2] = CALL_lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[2] = CALL_symbol___String___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[1] = fra.me.REG[2];
-    /* ./syntax//syntax_base.nit:521 */
+    /* ./syntax//syntax_base.nit:520 */
     ATTR_syntax_base___Token____symbol_cache(fra.me.REG[0]) = fra.me.REG[1];
   }
-  /* ./syntax//syntax_base.nit:523 */
+  /* ./syntax//syntax_base.nit:522 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -3250,14 +3303,12 @@ val_t syntax_base___AClassdef___local_class(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 528;
+  fra.me.line = 527;
   fra.me.meth = LOCATE_syntax_base___AClassdef___local_class;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:528 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 528);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:527 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 527);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -3266,14 +3317,14 @@ val_t syntax_base___AClassdef___next_node(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 531;
+  fra.me.line = 530;
   fra.me.meth = LOCATE_syntax_base___AClassdef___next_node;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:530 */
   fra.me.REG[0] = ATTR_syntax_base___AClassdef____next_node(fra.me.REG[0]);
-  /* ./syntax//syntax_base.nit:531 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
@@ -3282,7 +3333,7 @@ void syntax_base___AClassdef___next_node__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_base;
-  fra.me.line = 531;
+  fra.me.line = 530;
   fra.me.meth = LOCATE_syntax_base___AClassdef___next_node__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3290,7 +3341,7 @@ void syntax_base___AClassdef___next_node__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//syntax_base.nit:531 */
+  /* ./syntax//syntax_base.nit:530 */
   ATTR_syntax_base___AClassdef____next_node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -3300,14 +3351,12 @@ val_t syntax_base___APropdef___self_var(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 536;
+  fra.me.line = 535;
   fra.me.meth = LOCATE_syntax_base___APropdef___self_var;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:536 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 536);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:535 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 535);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -3316,14 +3365,12 @@ val_t syntax_base___AAttrPropdef___prop(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 541;
+  fra.me.line = 540;
   fra.me.meth = LOCATE_syntax_base___AAttrPropdef___prop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:541 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 541);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:540 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 540);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -3332,14 +3379,12 @@ val_t syntax_base___AAttrPropdef___readmethod(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 544;
+  fra.me.line = 543;
   fra.me.meth = LOCATE_syntax_base___AAttrPropdef___readmethod;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:544 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 544);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:543 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 543);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -3348,14 +3393,12 @@ val_t syntax_base___AAttrPropdef___writemethod(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 547;
+  fra.me.line = 546;
   fra.me.meth = LOCATE_syntax_base___AAttrPropdef___writemethod;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:547 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 547);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:546 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 546);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -3365,19 +3408,17 @@ val_t syntax_base___AConcreteInitPropdef___super_init_calls(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 552;
+  fra.me.line = 551;
   fra.me.meth = LOCATE_syntax_base___AConcreteInitPropdef___super_init_calls;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:551 */
   REGB0 = TAG_Bool(ATTR_syntax_base___AConcreteInitPropdef____super_init_calls(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:552 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_super_init_calls");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 552);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_super_init_calls", LOCATE_syntax_base, 551);
   }
   fra.me.REG[0] = ATTR_syntax_base___AConcreteInitPropdef____super_init_calls(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -3389,19 +3430,17 @@ val_t syntax_base___AConcreteInitPropdef___explicit_super_init_calls(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 553;
+  fra.me.line = 552;
   fra.me.meth = LOCATE_syntax_base___AConcreteInitPropdef___explicit_super_init_calls;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:552 */
   REGB0 = TAG_Bool(ATTR_syntax_base___AConcreteInitPropdef____explicit_super_init_calls(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:553 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_explicit_super_init_calls");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 553);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_explicit_super_init_calls", LOCATE_syntax_base, 552);
   }
   fra.me.REG[0] = ATTR_syntax_base___AConcreteInitPropdef____explicit_super_init_calls(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -3412,14 +3451,12 @@ val_t syntax_base___AMethPropdef___method(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 557;
+  fra.me.line = 556;
   fra.me.meth = LOCATE_syntax_base___AMethPropdef___method;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:557 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 557);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:556 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 556);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -3428,14 +3465,12 @@ val_t syntax_base___ATypePropdef___prop(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 562;
+  fra.me.line = 561;
   fra.me.meth = LOCATE_syntax_base___ATypePropdef___prop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:562 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 562);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:561 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 561);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -3444,14 +3479,12 @@ val_t syntax_base___AParam___position(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 567;
+  fra.me.line = 566;
   fra.me.meth = LOCATE_syntax_base___AParam___position;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:567 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 567);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:566 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 566);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -3460,14 +3493,12 @@ val_t syntax_base___AParam___variable(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 570;
+  fra.me.line = 569;
   fra.me.meth = LOCATE_syntax_base___AParam___variable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:570 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 570);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:569 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 569);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -3476,14 +3507,12 @@ val_t syntax_base___AClosureDecl___position(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 575;
+  fra.me.line = 574;
   fra.me.meth = LOCATE_syntax_base___AClosureDecl___position;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:575 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 575);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:574 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 574);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -3492,14 +3521,12 @@ val_t syntax_base___AClosureDecl___variable(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 578;
+  fra.me.line = 577;
   fra.me.meth = LOCATE_syntax_base___AClosureDecl___variable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:578 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 578);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:577 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 577);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -3508,14 +3535,12 @@ val_t syntax_base___AType___is_typed(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 583;
+  fra.me.line = 582;
   fra.me.meth = LOCATE_syntax_base___AType___is_typed;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:583 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 583);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:582 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 582);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -3524,14 +3549,12 @@ val_t syntax_base___AType___stype(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 588;
+  fra.me.line = 587;
   fra.me.meth = LOCATE_syntax_base___AType___stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:588 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 588);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:587 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 587);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -3547,7 +3570,7 @@ val_t syntax_base___AType___get_local_class(val_t p0, val_t p1){
     static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 594;
+  fra.me.line = 593;
   fra.me.meth = LOCATE_syntax_base___AType___get_local_class;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -3561,13 +3584,16 @@ val_t syntax_base___AType___get_local_class(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./syntax//syntax_base.nit:598 */
   fra.me.REG[2] = CALL_parser_nodes___AType___n_id(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_syntax_base___Token___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
-  fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___module(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./syntax//syntax_base.nit:599 */
+  fra.me.REG[3] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./syntax//syntax_base.nit:600 */
   fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./syntax//syntax_base.nit:602 */
   fra.me.REG[5] = CALL_syntax_base___MMSrcLocalClass___formal_dict(fra.me.REG[4])(fra.me.REG[4]);
   REGB0 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
-  /* ./syntax//syntax_base.nit:603 */
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(true);
   } else {
@@ -3575,10 +3601,10 @@ val_t syntax_base___AType___get_local_class(val_t p0, val_t p1){
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
+    /* ./syntax//syntax_base.nit:603 */
     fra.me.REG[4] = CALL_parser_nodes___AType___n_id(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Int(3);
     fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB0);
-    /* ./syntax//syntax_base.nit:604 */
     if (!once_value_1) {
       fra.me.REG[6] = BOX_NativeString("Type error: ");
       REGB0 = TAG_Int(12);
@@ -3586,9 +3612,10 @@ val_t syntax_base___AType___get_local_class(val_t p0, val_t p1){
       once_value_1 = fra.me.REG[6];
       register_static_object(&once_value_1);
     } else fra.me.REG[6] = once_value_1;
-    array___Array___add(fra.me.REG[5], fra.me.REG[6]);
+    fra.me.REG[6] = fra.me.REG[6];
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
     fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-    array___Array___add(fra.me.REG[5], fra.me.REG[6]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
     if (!once_value_2) {
       fra.me.REG[6] = BOX_NativeString(" is a formal type");
       REGB0 = TAG_Int(17);
@@ -3596,24 +3623,25 @@ val_t syntax_base___AType___get_local_class(val_t p0, val_t p1){
       once_value_2 = fra.me.REG[6];
       register_static_object(&once_value_2);
     } else fra.me.REG[6] = once_value_2;
-    array___Array___add(fra.me.REG[5], fra.me.REG[6]);
+    fra.me.REG[6] = fra.me.REG[6];
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
     fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
     CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
+    /* ./syntax//syntax_base.nit:604 */
     REGB0 = TAG_Bool(true);
-    /* ./syntax//syntax_base.nit:605 */
     ATTR_syntax_base___AType____stype_cached(fra.me.REG[0]) = REGB0;
+    /* ./syntax//syntax_base.nit:605 */
     fra.me.REG[5] = NIT_NULL;
-    /* ./syntax//syntax_base.nit:606 */
     goto label3;
   }
+  /* ./syntax//syntax_base.nit:608 */
   REGB0 = CALL_abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  /* ./syntax//syntax_base.nit:609 */
   if (UNTAG_Bool(REGB0)) {
+    /* ./syntax//syntax_base.nit:609 */
     fra.me.REG[4] = CALL_parser_nodes___AType___n_id(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Int(5);
     fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB0);
-    /* ./syntax//syntax_base.nit:610 */
     if (!once_value_4) {
       fra.me.REG[7] = BOX_NativeString("Type error: class ");
       REGB0 = TAG_Int(18);
@@ -3621,9 +3649,10 @@ val_t syntax_base___AType___get_local_class(val_t p0, val_t p1){
       once_value_4 = fra.me.REG[7];
       register_static_object(&once_value_4);
     } else fra.me.REG[7] = once_value_4;
-    array___Array___add(fra.me.REG[6], fra.me.REG[7]);
+    fra.me.REG[7] = fra.me.REG[7];
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
     fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-    array___Array___add(fra.me.REG[6], fra.me.REG[7]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
     if (!once_value_5) {
       fra.me.REG[7] = BOX_NativeString(" not found in module ");
       REGB0 = TAG_Int(21);
@@ -3631,9 +3660,10 @@ val_t syntax_base___AType___get_local_class(val_t p0, val_t p1){
       once_value_5 = fra.me.REG[7];
       register_static_object(&once_value_5);
     } else fra.me.REG[7] = once_value_5;
-    array___Array___add(fra.me.REG[6], fra.me.REG[7]);
+    fra.me.REG[7] = fra.me.REG[7];
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
     fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-    array___Array___add(fra.me.REG[6], fra.me.REG[7]);
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
     if (!once_value_6) {
       fra.me.REG[7] = BOX_NativeString(".");
       REGB0 = TAG_Int(1);
@@ -3641,22 +3671,24 @@ val_t syntax_base___AType___get_local_class(val_t p0, val_t p1){
       once_value_6 = fra.me.REG[7];
       register_static_object(&once_value_6);
     } else fra.me.REG[7] = once_value_6;
-    array___Array___add(fra.me.REG[6], fra.me.REG[7]);
+    fra.me.REG[7] = fra.me.REG[7];
+    CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
     fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
     CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
+    /* ./syntax//syntax_base.nit:610 */
     REGB0 = TAG_Bool(true);
-    /* ./syntax//syntax_base.nit:611 */
     ATTR_syntax_base___AType____stype_cached(fra.me.REG[0]) = REGB0;
+    /* ./syntax//syntax_base.nit:611 */
     fra.me.REG[5] = NIT_NULL;
-    /* ./syntax//syntax_base.nit:612 */
     goto label3;
   }
+  /* ./syntax//syntax_base.nit:614 */
   fra.me.REG[2] = CALL_abstractmetamodel___MMModule___class_by_name(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  /* ./syntax//syntax_base.nit:615 */
   fra.me.REG[6] = CALL_abstractmetamodel___MMLocalClass___global(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//syntax_base.nit:616 */
   CALL_syntax_base___MMGlobalClass___check_visibility(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
+  /* ./syntax//syntax_base.nit:616 */
   fra.me.REG[5] = fra.me.REG[2];
-  /* ./syntax//syntax_base.nit:617 */
   goto label3;
   label3: while(0);
   stack_frame_head = fra.me.prev;
@@ -3685,7 +3717,7 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
         static val_t once_value_15; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 620;
+  fra.me.line = 619;
   fra.me.meth = LOCATE_syntax_base___AType___get_unchecked_stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -3699,39 +3731,42 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./syntax//syntax_base.nit:625 */
   REGB0 = TAG_Bool(ATTR_syntax_base___AType____stype_cached(fra.me.REG[0])!=NIT_NULL);
-  /* ./syntax//syntax_base.nit:626 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    fprintf(stderr, "Uninitialized attribute %s", "_stype_cached");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 626);
-    nit_exit(1);
+    nit_abort("Uninitialized attribute %s", "_stype_cached", LOCATE_syntax_base, 625);
   }
   REGB0 = ATTR_syntax_base___AType____stype_cached(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
     fra.me.REG[2] = ATTR_syntax_base___AType____stype_cache(fra.me.REG[0]);
     goto label1;
   }
+  /* ./syntax//syntax_base.nit:626 */
   REGB0 = TAG_Bool(true);
-  /* ./syntax//syntax_base.nit:627 */
   ATTR_syntax_base___AType____stype_cached(fra.me.REG[0]) = REGB0;
+  /* ./syntax//syntax_base.nit:628 */
   fra.me.REG[3] = CALL_parser_nodes___AType___n_id(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_syntax_base___Token___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___module(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./syntax//syntax_base.nit:629 */
+  fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./syntax//syntax_base.nit:630 */
   fra.me.REG[4] = CALL_syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./syntax//syntax_base.nit:633 */
   fra.me.REG[5] = CALL_syntax_base___MMSrcLocalClass___formal_dict(fra.me.REG[4])(fra.me.REG[4]);
   REGB0 = CALL_abstract_collection___MapRead___has_key(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  /* ./syntax//syntax_base.nit:634 */
   if (UNTAG_Bool(REGB0)) {
+    /* ./syntax//syntax_base.nit:634 */
     fra.me.REG[5] = CALL_parser_nodes___AType___n_types(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = CALL_abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
     REGB1 = TAG_Int(0);
+    /* ./../lib/standard//kernel.nit:214 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-    /* ./syntax//syntax_base.nit:635 */
+    /* ./syntax//syntax_base.nit:634 */
     if (UNTAG_Bool(REGB1)) {
+      /* ./syntax//syntax_base.nit:635 */
       REGB1 = TAG_Int(3);
       fra.me.REG[5] = NEW_Array_array___Array___with_capacity(REGB1);
-      /* ./syntax//syntax_base.nit:636 */
       if (!once_value_2) {
         fra.me.REG[6] = BOX_NativeString("Type error: formal type ");
         REGB1 = TAG_Int(24);
@@ -3739,9 +3774,10 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
         once_value_2 = fra.me.REG[6];
         register_static_object(&once_value_2);
       } else fra.me.REG[6] = once_value_2;
-      array___Array___add(fra.me.REG[5], fra.me.REG[6]);
+      fra.me.REG[6] = fra.me.REG[6];
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
       fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-      array___Array___add(fra.me.REG[5], fra.me.REG[6]);
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
       if (!once_value_3) {
         fra.me.REG[6] = BOX_NativeString(" cannot have formal parameters.");
         REGB1 = TAG_Int(31);
@@ -3749,18 +3785,20 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
         once_value_3 = fra.me.REG[6];
         register_static_object(&once_value_3);
       } else fra.me.REG[6] = once_value_3;
-      array___Array___add(fra.me.REG[5], fra.me.REG[6]);
+      fra.me.REG[6] = fra.me.REG[6];
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
       fra.me.REG[5] = CALL_string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
       CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
+      /* ./syntax//syntax_base.nit:636 */
       fra.me.REG[2] = NIT_NULL;
-      /* ./syntax//syntax_base.nit:637 */
       goto label1;
     }
+    /* ./syntax//syntax_base.nit:638 */
     fra.me.REG[5] = CALL_syntax_base___MMSrcLocalClass___formal_dict(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[5] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+    /* ./syntax//syntax_base.nit:639 */
     fra.me.REG[6] = CALL_parser_nodes___AType___n_kwnullable(fra.me.REG[0])(fra.me.REG[0]);
     REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
-    /* ./syntax//syntax_base.nit:640 */
     if (UNTAG_Bool(REGB1)) {
     } else {
       REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
@@ -3776,31 +3814,31 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        fprintf(stderr, "Reciever is null");
-        fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 640);
-        nit_exit(1);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 639);
       }
       fra.me.REG[6] = CALL_static_type___MMType___as_nullable(fra.me.REG[5])(fra.me.REG[5]);
       fra.me.REG[5] = fra.me.REG[6];
     }
-    /* ./syntax//syntax_base.nit:641 */
+    /* ./syntax//syntax_base.nit:640 */
     ATTR_syntax_base___AType____stype_cache(fra.me.REG[0]) = fra.me.REG[5];
+    /* ./syntax//syntax_base.nit:641 */
     fra.me.REG[2] = fra.me.REG[5];
-    /* ./syntax//syntax_base.nit:642 */
     goto label1;
   }
+  /* ./syntax//syntax_base.nit:644 */
   REGB1 = CALL_abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  /* ./syntax//syntax_base.nit:645 */
   if (UNTAG_Bool(REGB1)) {
+    /* ./syntax//syntax_base.nit:645 */
     fra.me.REG[6] = CALL_parser_nodes___AType___n_types(fra.me.REG[0])(fra.me.REG[0]);
     REGB1 = CALL_abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
     REGB0 = TAG_Int(0);
+    /* ./../lib/standard//kernel.nit:214 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
-    /* ./syntax//syntax_base.nit:646 */
+    /* ./syntax//syntax_base.nit:645 */
     if (UNTAG_Bool(REGB0)) {
+      /* ./syntax//syntax_base.nit:646 */
       REGB0 = TAG_Int(3);
       fra.me.REG[6] = NEW_Array_array___Array___with_capacity(REGB0);
-      /* ./syntax//syntax_base.nit:647 */
       if (!once_value_4) {
         fra.me.REG[7] = BOX_NativeString("Type error: formal type ");
         REGB0 = TAG_Int(24);
@@ -3808,9 +3846,10 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
         once_value_4 = fra.me.REG[7];
         register_static_object(&once_value_4);
       } else fra.me.REG[7] = once_value_4;
-      array___Array___add(fra.me.REG[6], fra.me.REG[7]);
+      fra.me.REG[7] = fra.me.REG[7];
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
       fra.me.REG[7] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-      array___Array___add(fra.me.REG[6], fra.me.REG[7]);
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
       if (!once_value_5) {
         fra.me.REG[7] = BOX_NativeString(" cannot have formal parameters.");
         REGB0 = TAG_Int(31);
@@ -3818,21 +3857,23 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
         once_value_5 = fra.me.REG[7];
         register_static_object(&once_value_5);
       } else fra.me.REG[7] = once_value_5;
-      array___Array___add(fra.me.REG[6], fra.me.REG[7]);
+      fra.me.REG[7] = fra.me.REG[7];
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
       fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
       CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
+      /* ./syntax//syntax_base.nit:647 */
       fra.me.REG[2] = NIT_NULL;
-      /* ./syntax//syntax_base.nit:648 */
       goto label1;
     }
+    /* ./syntax//syntax_base.nit:649 */
     fra.me.REG[6] = CALL_static_type___MMLocalClass___get_type(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[6] = CALL_static_type___MMType___local_class(fra.me.REG[6])(fra.me.REG[6]);
     fra.me.REG[6] = CALL_virtualtype___MMLocalClass___select_virtual_type(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
     fra.me.REG[4] = CALL_static_type___MMLocalClass___get_type(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[4] = CALL_virtualtype___MMTypeProperty___stype_for(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
     fra.me.REG[5] = fra.me.REG[4];
+    /* ./syntax//syntax_base.nit:650 */
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
-    /* ./syntax//syntax_base.nit:651 */
     if (UNTAG_Bool(REGB0)) {
     } else {
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
@@ -3845,9 +3886,9 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
       }
     }
     if (UNTAG_Bool(REGB0)) {
+      /* ./syntax//syntax_base.nit:651 */
       REGB0 = TAG_Int(3);
       fra.me.REG[4] = NEW_Array_array___Array___with_capacity(REGB0);
-      /* ./syntax//syntax_base.nit:652 */
       if (!once_value_6) {
         fra.me.REG[6] = BOX_NativeString("Type error: circular definition in formal type ");
         REGB0 = TAG_Int(47);
@@ -3855,9 +3896,10 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
         once_value_6 = fra.me.REG[6];
         register_static_object(&once_value_6);
       } else fra.me.REG[6] = once_value_6;
-      array___Array___add(fra.me.REG[4], fra.me.REG[6]);
+      fra.me.REG[6] = fra.me.REG[6];
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
       fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-      array___Array___add(fra.me.REG[4], fra.me.REG[3]);
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
       if (!once_value_7) {
         fra.me.REG[3] = BOX_NativeString(".");
         REGB0 = TAG_Int(1);
@@ -3865,16 +3907,17 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
         once_value_7 = fra.me.REG[3];
         register_static_object(&once_value_7);
       } else fra.me.REG[3] = once_value_7;
-      array___Array___add(fra.me.REG[4], fra.me.REG[3]);
+      fra.me.REG[3] = fra.me.REG[3];
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
       fra.me.REG[4] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
       CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
+      /* ./syntax//syntax_base.nit:652 */
       fra.me.REG[2] = NIT_NULL;
-      /* ./syntax//syntax_base.nit:653 */
       goto label1;
     }
+    /* ./syntax//syntax_base.nit:654 */
     fra.me.REG[4] = CALL_parser_nodes___AType___n_kwnullable(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
-    /* ./syntax//syntax_base.nit:655 */
     if (UNTAG_Bool(REGB0)) {
     } else {
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
@@ -3890,22 +3933,21 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
     if (UNTAG_Bool(REGB0)) {
       REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        fprintf(stderr, "Reciever is null");
-        fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 655);
-        nit_exit(1);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 654);
       }
       fra.me.REG[4] = CALL_static_type___MMType___as_nullable(fra.me.REG[5])(fra.me.REG[5]);
       fra.me.REG[5] = fra.me.REG[4];
     }
-    /* ./syntax//syntax_base.nit:656 */
+    /* ./syntax//syntax_base.nit:655 */
     ATTR_syntax_base___AType____stype_cache(fra.me.REG[0]) = fra.me.REG[5];
+    /* ./syntax//syntax_base.nit:656 */
     fra.me.REG[2] = fra.me.REG[5];
-    /* ./syntax//syntax_base.nit:657 */
     goto label1;
   }
+  /* ./syntax//syntax_base.nit:659 */
   fra.me.REG[4] = CALL_syntax_base___AType___get_local_class(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./syntax//syntax_base.nit:660 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
-  /* ./syntax//syntax_base.nit:661 */
   if (UNTAG_Bool(REGB0)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
@@ -3921,38 +3963,39 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
     fra.me.REG[2] = NIT_NULL;
     goto label1;
   }
+  /* ./syntax//syntax_base.nit:662 */
   fra.me.REG[3] = CALL_parser_nodes___AType___n_types(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./syntax//syntax_base.nit:663 */
   REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
-  /* ./syntax//syntax_base.nit:664 */
   if (UNTAG_Bool(REGB1)) {
-    fprintf(stderr, "Reciever is null");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 664);
-    nit_exit(1);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 663);
   }
   REGB1 = CALL_abstractmetamodel___MMLocalClass___arity(fra.me.REG[4])(fra.me.REG[4]);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB0));
   if (UNTAG_Bool(REGB2)) {
   } else {
+    /* ./../lib/standard//kernel.nit:207 */
     REGB1 = TAG_Bool((REGB1)==(REGB0));
+    /* ./syntax//syntax_base.nit:663 */
     REGB2 = REGB1;
-  /* ./syntax//syntax_base.nit:664 */
   }
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   if (UNTAG_Bool(REGB2)) {
+    /* ./syntax//syntax_base.nit:664 */
     REGB2 = TAG_Int(0);
     REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
-    /* ./syntax//syntax_base.nit:665 */
     if (UNTAG_Bool(REGB1)) {
     } else {
+      /* ./../lib/standard//kernel.nit:207 */
       REGB2 = TAG_Bool((REGB0)==(REGB2));
+      /* ./syntax//syntax_base.nit:664 */
       REGB1 = REGB2;
-    /* ./syntax//syntax_base.nit:665 */
     }
     if (UNTAG_Bool(REGB1)) {
+      /* ./syntax//syntax_base.nit:665 */
       REGB1 = TAG_Int(3);
       fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB1);
-      /* ./syntax//syntax_base.nit:666 */
       if (!once_value_8) {
         fra.me.REG[6] = BOX_NativeString("Type error: '");
         REGB1 = TAG_Int(13);
@@ -3960,9 +4003,10 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
         once_value_8 = fra.me.REG[6];
         register_static_object(&once_value_8);
       } else fra.me.REG[6] = once_value_8;
-      array___Array___add(fra.me.REG[3], fra.me.REG[6]);
+      fra.me.REG[6] = fra.me.REG[6];
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
       fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-      array___Array___add(fra.me.REG[3], fra.me.REG[6]);
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
       if (!once_value_9) {
         fra.me.REG[6] = BOX_NativeString("' is a generic class.");
         REGB1 = TAG_Int(21);
@@ -3970,30 +4014,30 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
         once_value_9 = fra.me.REG[6];
         register_static_object(&once_value_9);
       } else fra.me.REG[6] = once_value_9;
-      array___Array___add(fra.me.REG[3], fra.me.REG[6]);
+      fra.me.REG[6] = fra.me.REG[6];
+      CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
       fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
       CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
     } else {
+      /* ./syntax//syntax_base.nit:666 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
-      /* ./syntax//syntax_base.nit:667 */
       if (UNTAG_Bool(REGB1)) {
-        fprintf(stderr, "Reciever is null");
-        fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 667);
-        nit_exit(1);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 666);
       }
       REGB1 = CALL_abstractmetamodel___MMLocalClass___arity(fra.me.REG[4])(fra.me.REG[4]);
       REGB2 = TAG_Int(0);
       REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
       if (UNTAG_Bool(REGB3)) {
       } else {
+        /* ./../lib/standard//kernel.nit:207 */
         REGB2 = TAG_Bool((REGB1)==(REGB2));
+        /* ./syntax//syntax_base.nit:666 */
         REGB3 = REGB2;
-      /* ./syntax//syntax_base.nit:667 */
       }
       if (UNTAG_Bool(REGB3)) {
+        /* ./syntax//syntax_base.nit:667 */
         REGB3 = TAG_Int(3);
         fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB3);
-        /* ./syntax//syntax_base.nit:668 */
         if (!once_value_10) {
           fra.me.REG[6] = BOX_NativeString("Type error: '");
           REGB3 = TAG_Int(13);
@@ -4001,9 +4045,10 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
           once_value_10 = fra.me.REG[6];
           register_static_object(&once_value_10);
         } else fra.me.REG[6] = once_value_10;
-        array___Array___add(fra.me.REG[3], fra.me.REG[6]);
+        fra.me.REG[6] = fra.me.REG[6];
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
         fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-        array___Array___add(fra.me.REG[3], fra.me.REG[6]);
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
         if (!once_value_11) {
           fra.me.REG[6] = BOX_NativeString("' is not a generic class.");
           REGB3 = TAG_Int(25);
@@ -4011,13 +4056,14 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
           once_value_11 = fra.me.REG[6];
           register_static_object(&once_value_11);
         } else fra.me.REG[6] = once_value_11;
-        array___Array___add(fra.me.REG[3], fra.me.REG[6]);
+        fra.me.REG[6] = fra.me.REG[6];
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
         fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
         CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
       } else {
+        /* ./syntax//syntax_base.nit:669 */
         REGB3 = TAG_Int(7);
         fra.me.REG[3] = NEW_Array_array___Array___with_capacity(REGB3);
-        /* ./syntax//syntax_base.nit:670 */
         if (!once_value_12) {
           fra.me.REG[6] = BOX_NativeString("Type error: '");
           REGB3 = TAG_Int(13);
@@ -4025,9 +4071,10 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
           once_value_12 = fra.me.REG[6];
           register_static_object(&once_value_12);
         } else fra.me.REG[6] = once_value_12;
-        array___Array___add(fra.me.REG[3], fra.me.REG[6]);
+        fra.me.REG[6] = fra.me.REG[6];
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
         fra.me.REG[6] = CALL_string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-        array___Array___add(fra.me.REG[3], fra.me.REG[6]);
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
         if (!once_value_13) {
           fra.me.REG[6] = BOX_NativeString("' has ");
           REGB3 = TAG_Int(6);
@@ -4035,16 +4082,15 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
           once_value_13 = fra.me.REG[6];
           register_static_object(&once_value_13);
         } else fra.me.REG[6] = once_value_13;
-        array___Array___add(fra.me.REG[3], fra.me.REG[6]);
+        fra.me.REG[6] = fra.me.REG[6];
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
         REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          fprintf(stderr, "Reciever is null");
-          fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 670);
-          nit_exit(1);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 669);
         }
         REGB3 = CALL_abstractmetamodel___MMLocalClass___arity(fra.me.REG[4])(fra.me.REG[4]);
         fra.me.REG[6] = CALL_string___Object___to_s(REGB3)(REGB3);
-        array___Array___add(fra.me.REG[3], fra.me.REG[6]);
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
         if (!once_value_14) {
           fra.me.REG[6] = BOX_NativeString(" parameters (");
           REGB3 = TAG_Int(13);
@@ -4052,9 +4098,10 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
           once_value_14 = fra.me.REG[6];
           register_static_object(&once_value_14);
         } else fra.me.REG[6] = once_value_14;
-        array___Array___add(fra.me.REG[3], fra.me.REG[6]);
+        fra.me.REG[6] = fra.me.REG[6];
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
         fra.me.REG[6] = CALL_string___Object___to_s(REGB0)(REGB0);
-        array___Array___add(fra.me.REG[3], fra.me.REG[6]);
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
         if (!once_value_15) {
           fra.me.REG[6] = BOX_NativeString(" are provided).");
           REGB3 = TAG_Int(15);
@@ -4062,77 +4109,50 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
           once_value_15 = fra.me.REG[6];
           register_static_object(&once_value_15);
         } else fra.me.REG[6] = once_value_15;
-        array___Array___add(fra.me.REG[3], fra.me.REG[6]);
+        fra.me.REG[6] = fra.me.REG[6];
+        CALL_abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
         fra.me.REG[3] = CALL_string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
         CALL_syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
       }
     }
+    /* ./syntax//syntax_base.nit:671 */
     fra.me.REG[2] = NIT_NULL;
-    /* ./syntax//syntax_base.nit:672 */
     goto label1;
   }
+  /* ./syntax//syntax_base.nit:674 */
   REGB3 = TAG_Int(0);
+  /* ./../lib/standard//kernel.nit:214 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
-  /* ./syntax//syntax_base.nit:675 */
+  /* ./syntax//syntax_base.nit:674 */
   if (UNTAG_Bool(REGB3)) {
+    /* ./syntax//syntax_base.nit:675 */
     fra.me.REG[3] = NEW_Array_array___Array___init();
+    /* ./syntax//syntax_base.nit:676 */
     fra.me.REG[6] = CALL_parser_nodes___AType___n_types(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[6] = CALL_abstract_collection___Collection___iterator(fra.me.REG[6])(fra.me.REG[6]);
-    /* ./syntax//syntax_base.nit:677 */
-    while(1) {
-      REGB3 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[6])(fra.me.REG[6]);
-      if (UNTAG_Bool(REGB3)) {
-        fra.me.REG[7] = CALL_abstract_collection___Iterator___item(fra.me.REG[6])(fra.me.REG[6]);
-        fra.me.REG[7] = CALL_syntax_base___AType___get_unchecked_stype(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[1]);
-        REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
-        /* ./syntax//syntax_base.nit:679 */
-        if (UNTAG_Bool(REGB3)) {
-        } else {
-          REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
-          if (UNTAG_Bool(REGB0)) {
-            REGB0 = TAG_Bool(false);
-            REGB3 = REGB0;
-          } else {
-            REGB0 = CALL_kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
-            REGB3 = REGB0;
-          }
-        }
-        if (UNTAG_Bool(REGB3)) {
-          fra.me.REG[2] = NIT_NULL;
-          goto label1;
-        }
-        /* ./syntax//syntax_base.nit:680 */
-        array___Array___add(fra.me.REG[3], fra.me.REG[7]);
-      } else {
-        /* ./syntax//syntax_base.nit:677 */
-        goto label16;
-      }
-      CALL_abstract_collection___Iterator___next(fra.me.REG[6])(fra.me.REG[6]);
+    CALL_abstract_collection___Collection___iterate(fra.me.REG[6])(fra.me.REG[6], (&(fra.me)), ((fun_t)OC_syntax_base___AType___get_unchecked_stype_16));
+    switch ((&(fra.me))->has_broke) {
+      case 0: break;
+      case 1: (&(fra.me))->has_broke = 0; goto label1;
     }
-    label16: while(0);
+    /* ./syntax//syntax_base.nit:681 */
     REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
-    /* ./syntax//syntax_base.nit:682 */
     if (UNTAG_Bool(REGB3)) {
-      fprintf(stderr, "Reciever is null");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 682);
-      nit_exit(1);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 681);
     }
     fra.me.REG[3] = CALL_genericity___MMLocalClass___get_instantiate_type(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
     fra.me.REG[5] = fra.me.REG[3];
   } else {
+    /* ./syntax//syntax_base.nit:683 */
     REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
-    /* ./syntax//syntax_base.nit:684 */
     if (UNTAG_Bool(REGB3)) {
-      fprintf(stderr, "Reciever is null");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 684);
-      nit_exit(1);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 683);
     }
     fra.me.REG[4] = CALL_static_type___MMLocalClass___get_type(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[5] = fra.me.REG[4];
   }
+  /* ./syntax//syntax_base.nit:685 */
   fra.me.REG[4] = CALL_parser_nodes___AType___n_kwnullable(fra.me.REG[0])(fra.me.REG[0]);
   REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
-  /* ./syntax//syntax_base.nit:686 */
   if (UNTAG_Bool(REGB3)) {
   } else {
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
@@ -4148,22 +4168,63 @@ val_t syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
   if (UNTAG_Bool(REGB3)) {
     REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB3)) {
-      fprintf(stderr, "Reciever is null");
-      fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 686);
-      nit_exit(1);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 685);
     }
     fra.me.REG[4] = CALL_static_type___MMType___as_nullable(fra.me.REG[5])(fra.me.REG[5]);
     fra.me.REG[5] = fra.me.REG[4];
   }
-  /* ./syntax//syntax_base.nit:687 */
+  /* ./syntax//syntax_base.nit:686 */
   ATTR_syntax_base___AType____stype_cache(fra.me.REG[0]) = fra.me.REG[5];
+  /* ./syntax//syntax_base.nit:687 */
   fra.me.REG[2] = fra.me.REG[5];
-  /* ./syntax//syntax_base.nit:688 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+    void OC_syntax_base___AType___get_unchecked_stype_16(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+      struct {struct stack_frame_t me;} fra;
+      val_t REGB0;
+      val_t REGB1;
+      fun_t CREG[1];
+      val_t tmp;
+      fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+      fra.me.file = LOCATE_syntax_base;
+      fra.me.line = 0;
+      fra.me.meth = LOCATE_syntax_base___AType___get_unchecked_stype;
+      fra.me.has_broke = 0;
+      fra.me.REG_size = 1;
+      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//syntax_base.nit:677 */
+      fra.me.REG[0] = CALL_syntax_base___AType___get_unchecked_stype(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
+      /* ./syntax//syntax_base.nit:678 */
+      REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
+          REGB1 = TAG_Bool(false);
+          REGB0 = REGB1;
+        } else {
+          REGB1 = CALL_kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+          REGB0 = REGB1;
+        }
+      }
+      if (UNTAG_Bool(REGB0)) {
+        closctx->REG[2] = NIT_NULL;
+        closctx->has_broke = 1;
+        goto label17;
+      }
+      /* ./syntax//syntax_base.nit:679 */
+      CALL_abstract_collection___SimpleCollection___add(closctx->REG[3])(closctx->REG[3], fra.me.REG[0]);
+      label17: while(0);
+      stack_frame_head = fra.me.prev;
+      return;
+    }
 val_t syntax_base___AType___get_stype(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -4171,7 +4232,7 @@ val_t syntax_base___AType___get_stype(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_base;
-  fra.me.line = 691;
+  fra.me.line = 690;
   fra.me.meth = LOCATE_syntax_base___AType___get_stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -4181,9 +4242,10 @@ val_t syntax_base___AType___get_stype(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./syntax//syntax_base.nit:694 */
   fra.me.REG[2] = CALL_syntax_base___AType___get_unchecked_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./syntax//syntax_base.nit:695 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-  /* ./syntax//syntax_base.nit:696 */
   if (UNTAG_Bool(REGB0)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
@@ -4199,12 +4261,10 @@ val_t syntax_base___AType___get_stype(val_t p0, val_t p1){
     fra.me.REG[3] = NIT_NULL;
     goto label1;
   }
+  /* ./syntax//syntax_base.nit:696 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-  /* ./syntax//syntax_base.nit:697 */
   if (UNTAG_Bool(REGB0)) {
-    fprintf(stderr, "Reciever is null");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 697);
-    nit_exit(1);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 696);
   }
   REGB0 = CALL_static_type___MMType___is_valid(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
@@ -4212,26 +4272,27 @@ val_t syntax_base___AType___get_stype(val_t p0, val_t p1){
     fra.me.REG[3] = NIT_NULL;
     goto label1;
   }
-  /* ./syntax//syntax_base.nit:698 */
+  /* ./syntax//syntax_base.nit:697 */
   CALL_syntax_base___AType___check_conform(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./syntax//syntax_base.nit:698 */
   fra.me.REG[3] = fra.me.REG[2];
-  /* ./syntax//syntax_base.nit:699 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
 void syntax_base___AType___check_conform(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 702;
+  fra.me.line = 701;
   fra.me.meth = LOCATE_syntax_base___AType___check_conform;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 9;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -4240,12 +4301,12 @@ void syntax_base___AType___check_conform(val_t p0, val_t p1){
   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//syntax_base.nit:706 */
   fra.me.REG[2] = CALL_syntax_base___AType___get_unchecked_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./syntax//syntax_base.nit:707 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-  /* ./syntax//syntax_base.nit:708 */
   if (UNTAG_Bool(REGB0)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
@@ -4260,48 +4321,61 @@ void syntax_base___AType___check_conform(val_t p0, val_t p1){
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
+  /* ./syntax//syntax_base.nit:708 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-  /* ./syntax//syntax_base.nit:709 */
   if (UNTAG_Bool(REGB0)) {
-    fprintf(stderr, "Reciever is null");
-    fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 709);
-    nit_exit(1);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax_base, 708);
   }
   fra.me.REG[3] = CALL_static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
+  /* ./syntax//syntax_base.nit:709 */
   fra.me.REG[4] = CALL_parser_nodes___AType___n_types(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
+  /* ./syntax//syntax_base.nit:710 */
   REGB1 = TAG_Int(0);
+  /* ./../lib/standard//kernel.nit:214 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ./syntax//syntax_base.nit:711 */
+  /* ./syntax//syntax_base.nit:710 */
   if (UNTAG_Bool(REGB1)) {
+    /* ./syntax//syntax_base.nit:711 */
     REGB1 = TAG_Int(0);
-    fra.me.REG[4] = NEW_Range_range___Range___without_last(REGB1, REGB0);
-    fra.me.REG[4] = CALL_abstract_collection___Collection___iterator(fra.me.REG[4])(fra.me.REG[4]);
-    /* ./syntax//syntax_base.nit:712 */
+    /* ./../lib/standard//kernel.nit:332 */
     while(1) {
-      REGB0 = CALL_abstract_collection___Iterator___is_ok(fra.me.REG[4])(fra.me.REG[4]);
-      if (UNTAG_Bool(REGB0)) {
-        REGB0 = CALL_abstract_collection___Iterator___item(fra.me.REG[4])(fra.me.REG[4]);
-        fra.me.REG[5] = CALL_parser_nodes___AType___n_types(fra.me.REG[0])(fra.me.REG[0]);
-        fra.me.REG[5] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], REGB0);
-        fra.me.REG[6] = CALL_syntax_base___AType___get_stype(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
-        fra.me.REG[7] = CALL_genericity___MMLocalClass___get_formal(fra.me.REG[3])(fra.me.REG[3], REGB0);
-        REGB0 = CALL_static_type___MMType___is_valid(fra.me.REG[7])(fra.me.REG[7]);
-        REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-        /* ./syntax//syntax_base.nit:716 */
-        if (UNTAG_Bool(REGB0)) {
+      /* ./../lib/standard//kernel.nit:212 */
+      REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
+      /* ./../lib/standard//kernel.nit:332 */
+      if (UNTAG_Bool(REGB2)) {
+        /* ./syntax//syntax_base.nit:711 */
+        REGB2 = REGB1;
+        /* ./syntax//syntax_base.nit:712 */
+        fra.me.REG[4] = CALL_parser_nodes___AType___n_types(fra.me.REG[0])(fra.me.REG[0]);
+        fra.me.REG[4] = CALL_abstract_collection___MapRead_____bra(fra.me.REG[4])(fra.me.REG[4], REGB2);
+        /* ./syntax//syntax_base.nit:713 */
+        fra.me.REG[5] = CALL_syntax_base___AType___get_stype(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
+        /* ./syntax//syntax_base.nit:714 */
+        fra.me.REG[6] = CALL_genericity___MMLocalClass___get_formal(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        /* ./syntax//syntax_base.nit:715 */
+        REGB2 = CALL_static_type___MMType___is_valid(fra.me.REG[6])(fra.me.REG[6]);
+        REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
+        if (UNTAG_Bool(REGB2)) {
           goto label1;
         }
-        fra.me.REG[7] = CALL_type_formal___MMTypeFormal___bound(fra.me.REG[7])(fra.me.REG[7]);
-        fra.me.REG[8] = CALL_static_type___MMType___adapt_to(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
-        fra.me.REG[7] = fra.me.REG[8];
-        /* ./syntax//syntax_base.nit:719 */
-        CALL_syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5], fra.me.REG[6], fra.me.REG[7]);
+        /* ./syntax//syntax_base.nit:716 */
+        fra.me.REG[6] = CALL_type_formal___MMTypeFormal___bound(fra.me.REG[6])(fra.me.REG[6]);
+        /* ./syntax//syntax_base.nit:717 */
+        fra.me.REG[7] = CALL_static_type___MMType___adapt_to(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+        fra.me.REG[6] = fra.me.REG[7];
+        /* ./syntax//syntax_base.nit:718 */
+        CALL_syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
+        /* ./../lib/standard//kernel.nit:334 */
+        REGB2 = TAG_Int(1);
+        /* ./../lib/standard//kernel.nit:215 */
+        REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
+        /* ./../lib/standard//kernel.nit:334 */
+        REGB1 = REGB2;
       } else {
-        /* ./syntax//syntax_base.nit:712 */
+        /* ./../lib/standard//kernel.nit:332 */
         goto label2;
       }
-      CALL_abstract_collection___Iterator___next(fra.me.REG[4])(fra.me.REG[4]);
     }
     label2: while(0);
   }
@@ -4314,14 +4388,12 @@ val_t syntax_base___AExpr___is_typed(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 726;
+  fra.me.line = 725;
   fra.me.meth = LOCATE_syntax_base___AExpr___is_typed;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:726 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 726);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:725 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 725);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4330,14 +4402,12 @@ val_t syntax_base___AExpr___is_statement(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 731;
+  fra.me.line = 730;
   fra.me.meth = LOCATE_syntax_base___AExpr___is_statement;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:731 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 731);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:730 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 730);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4346,14 +4416,12 @@ val_t syntax_base___AExpr___stype(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 735;
+  fra.me.line = 734;
   fra.me.meth = LOCATE_syntax_base___AExpr___stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:735 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 735);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:734 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 734);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4362,14 +4430,12 @@ val_t syntax_base___AAbsAbsSendExpr___prop_signature(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 742;
+  fra.me.line = 741;
   fra.me.meth = LOCATE_syntax_base___AAbsAbsSendExpr___prop_signature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:742 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 742);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:741 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 741);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4378,14 +4444,12 @@ val_t syntax_base___AAbsAbsSendExpr___raw_arguments(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 745;
+  fra.me.line = 744;
   fra.me.meth = LOCATE_syntax_base___AAbsAbsSendExpr___raw_arguments;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:745 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 745);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:744 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 744);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4394,14 +4458,12 @@ val_t syntax_base___AAbsSendExpr___prop(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 751;
+  fra.me.line = 750;
   fra.me.meth = LOCATE_syntax_base___AAbsSendExpr___prop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:751 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 751);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:750 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 750);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4410,14 +4472,12 @@ val_t syntax_base___AAbsSendExpr___return_type(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 754;
+  fra.me.line = 753;
   fra.me.meth = LOCATE_syntax_base___AAbsSendExpr___return_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:754 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 754);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:753 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 753);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4426,14 +4486,12 @@ val_t syntax_base___ASuperExpr___init_in_superclass(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 764;
+  fra.me.line = 763;
   fra.me.meth = LOCATE_syntax_base___ASuperExpr___init_in_superclass;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:764 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 764);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:763 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 763);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4442,14 +4500,12 @@ val_t syntax_base___ASendExpr___closure_defs(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 773;
+  fra.me.line = 772;
   fra.me.meth = LOCATE_syntax_base___ASendExpr___closure_defs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:773 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 773);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:772 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 772);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4458,14 +4514,12 @@ val_t syntax_base___AReassignFormExpr___assign_method(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 778;
+  fra.me.line = 777;
   fra.me.meth = LOCATE_syntax_base___AReassignFormExpr___assign_method;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:778 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 778);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:777 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 777);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4474,14 +4528,12 @@ val_t syntax_base___ASendReassignExpr___read_prop(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 785;
+  fra.me.line = 784;
   fra.me.meth = LOCATE_syntax_base___ASendReassignExpr___read_prop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:785 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 785);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:784 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 784);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4490,14 +4542,12 @@ val_t syntax_base___AAttrFormExpr___prop(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 799;
+  fra.me.line = 798;
   fra.me.meth = LOCATE_syntax_base___AAttrFormExpr___prop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:799 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 799);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:798 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 798);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4506,14 +4556,12 @@ val_t syntax_base___AAttrFormExpr___attr_type(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 802;
+  fra.me.line = 801;
   fra.me.meth = LOCATE_syntax_base___AAttrFormExpr___attr_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:802 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 802);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:801 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 801);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4522,14 +4570,12 @@ val_t syntax_base___ASuperstringExpr___atype(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 807;
+  fra.me.line = 806;
   fra.me.meth = LOCATE_syntax_base___ASuperstringExpr___atype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:807 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 807);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:806 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 806);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4538,14 +4584,12 @@ val_t syntax_base___AVardeclExpr___variable(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 811;
+  fra.me.line = 810;
   fra.me.meth = LOCATE_syntax_base___AVardeclExpr___variable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:811 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 811);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:810 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 810);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4554,14 +4598,12 @@ val_t syntax_base___AForExpr___variable(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 817;
+  fra.me.line = 816;
   fra.me.meth = LOCATE_syntax_base___AForExpr___variable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:817 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 817);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:816 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 816);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4570,14 +4612,12 @@ val_t syntax_base___ASelfExpr___variable(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 822;
+  fra.me.line = 821;
   fra.me.meth = LOCATE_syntax_base___ASelfExpr___variable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:822 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 822);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:821 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 821);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4586,14 +4626,12 @@ val_t syntax_base___AVarFormExpr___variable(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 827;
+  fra.me.line = 826;
   fra.me.meth = LOCATE_syntax_base___AVarFormExpr___variable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:827 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 827);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:826 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 826);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4602,14 +4640,12 @@ val_t syntax_base___AClosureCallExpr___variable(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 833;
+  fra.me.line = 832;
   fra.me.meth = LOCATE_syntax_base___AClosureCallExpr___variable;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:833 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 833);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:832 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 832);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4618,14 +4654,12 @@ val_t syntax_base___AClosureDef___closure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 838;
+  fra.me.line = 837;
   fra.me.meth = LOCATE_syntax_base___AClosureDef___closure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//syntax_base.nit:838 */
-  fprintf(stderr, "Deferred method called");
-  fprintf(stderr, " (%s:%d)\n", LOCATE_syntax_base, 838);
-  nit_exit(1);
+  /* ./syntax//syntax_base.nit:837 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax_base, 837);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4634,14 +4668,14 @@ val_t syntax_base___AClosureDef___variables(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax_base;
-  fra.me.line = 841;
+  fra.me.line = 840;
   fra.me.meth = LOCATE_syntax_base___AClosureDef___variables;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:840 */
   fra.me.REG[0] = ATTR_syntax_base___AClosureDef____variables(fra.me.REG[0]);
-  /* ./syntax//syntax_base.nit:841 */
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
@@ -4650,7 +4684,7 @@ void syntax_base___AClosureDef___variables__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_base;
-  fra.me.line = 841;
+  fra.me.line = 840;
   fra.me.meth = LOCATE_syntax_base___AClosureDef___variables__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4658,7 +4692,7 @@ void syntax_base___AClosureDef___variables__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//syntax_base.nit:841 */
+  /* ./syntax//syntax_base.nit:840 */
   ATTR_syntax_base___AClosureDef____variables(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;