ni_nitdoc: added fast copy past utility to signatures.
[nit.git] / c_src / native_interface___ni_metamodel._sep.c
index 80000d1..fa444ef 100644 (file)
@@ -1,5 +1,6 @@
 /* This C file is generated by NIT to compile module native_interface___ni_metamodel. */
 #include "native_interface___ni_metamodel._sep.h"
+static const char LOCATE_native_interface___ni_metamodel___MMType___friendly_extern_name[] = "ni_metamodel::MMType::friendly_extern_name";
 val_t native_interface___ni_metamodel___MMType___friendly_extern_name(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -13,18 +14,19 @@ val_t native_interface___ni_metamodel___MMType___friendly_extern_name(val_t p0){
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMType___friendly_extern_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//ni_metamodel.nit:30 */
+  /* native_interface/ni_metamodel.nit:30 */
   fra.me.REG[1] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./native_interface//ni_metamodel.nit:31 */
+  /* native_interface/ni_metamodel.nit:31 */
   REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//ni_metamodel.nit:32 */
+    /* native_interface/ni_metamodel.nit:32 */
     REGB0 = TAG_Int(3);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -52,13 +54,13 @@ val_t native_interface___ni_metamodel___MMType___friendly_extern_name(val_t p0){
     fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
     goto label3;
   } else {
-    /* ./native_interface//ni_metamodel.nit:33 */
+    /* native_interface/ni_metamodel.nit:33 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(false);
+        REGB1 = TAG_Bool(0);
         REGB0 = REGB1;
       } else {
         REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
@@ -66,40 +68,91 @@ val_t native_interface___ni_metamodel___MMType___friendly_extern_name(val_t p0){
       }
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./native_interface//ni_metamodel.nit:34 */
-      fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[3])(fra.me.REG[3]);
-      fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-      fra.me.REG[2] = fra.me.REG[3];
+      /* native_interface/ni_metamodel.nit:34 */
+      fra.me.REG[0] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
+      fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[0])(fra.me.REG[0]);
+      fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
+      fra.me.REG[2] = fra.me.REG[0];
       goto label3;
     } else {
-      /* ./native_interface//ni_metamodel.nit:35 */
-      fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
-      REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[3])(fra.me.REG[3]);
+      /* native_interface/ni_metamodel.nit:36 */
+      REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        /* ./native_interface//ni_metamodel.nit:36 */
-        fra.me.REG[0] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
-        fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[0])(fra.me.REG[0]);
-        fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
-        fra.me.REG[2] = fra.me.REG[0];
-        goto label3;
-      } else {
-        /* ./native_interface//ni_metamodel.nit:38 */
-        REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-        if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 38);
-        }
-        fra.me.REG[1] = CALL_primitive_info___PrimitiveInfo___cname(fra.me.REG[1])(fra.me.REG[1]);
-        fra.me.REG[2] = fra.me.REG[1];
-        goto label3;
+        nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 36);
       }
+      fra.me.REG[1] = CALL_primitive_info___PrimitiveInfo___cname(fra.me.REG[1])(fra.me.REG[1]);
+      fra.me.REG[2] = fra.me.REG[1];
+      goto label3;
     }
   }
   label3: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMType___mangled_name[] = "ni_metamodel::MMType::mangled_name";
+val_t native_interface___ni_metamodel___MMType___mangled_name(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+    static val_t once_value_1; /* Once value */
+    static val_t once_value_2; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_native_interface___ni_metamodel;
+  fra.me.line = 40;
+  fra.me.meth = LOCATE_native_interface___ni_metamodel___MMType___mangled_name;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* native_interface/ni_metamodel.nit:42 */
+  fra.me.REG[1] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[1] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[1])(fra.me.REG[1]);
+  /* native_interface/ni_metamodel.nit:43 */
+  REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
+  if (UNTAG_Bool(REGB0)) {
+    /* native_interface/ni_metamodel.nit:44 */
+    REGB0 = TAG_Int(3);
+    fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+    if (!once_value_1) {
+      fra.me.REG[2] = BOX_NativeString("nullable_");
+      REGB0 = TAG_Int(9);
+      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      once_value_1 = fra.me.REG[2];
+      register_static_object(&once_value_1);
+    } else fra.me.REG[2] = once_value_1;
+    fra.me.REG[2] = fra.me.REG[2];
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    if (!once_value_2) {
+      fra.me.REG[2] = BOX_NativeString("");
+      REGB0 = TAG_Int(0);
+      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      once_value_2 = fra.me.REG[2];
+      register_static_object(&once_value_2);
+    } else fra.me.REG[2] = once_value_2;
+    fra.me.REG[2] = fra.me.REG[2];
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+    goto label3;
+  } else {
+    /* native_interface/ni_metamodel.nit:46 */
+    fra.me.REG[0] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[1] = fra.me.REG[0];
+    goto label3;
+  }
+  label3: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_native_interface___ni_metamodel___MMType___from_native[] = "ni_metamodel::MMType::from_native";
 val_t native_interface___ni_metamodel___MMType___from_native(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
@@ -109,10 +162,11 @@ val_t native_interface___ni_metamodel___MMType___from_native(val_t p0, val_t p1)
     static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 42;
+  fra.me.line = 50;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMType___from_native;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -120,7 +174,7 @@ val_t native_interface___ni_metamodel___MMType___from_native(val_t p0, val_t p1)
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//ni_metamodel.nit:45 */
+  /* native_interface/ni_metamodel.nit:53 */
   fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
@@ -128,7 +182,7 @@ val_t native_interface___ni_metamodel___MMType___from_native(val_t p0, val_t p1)
   } else {
     REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
@@ -137,7 +191,7 @@ val_t native_interface___ni_metamodel___MMType___from_native(val_t p0, val_t p1)
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    REGB0 = TAG_Bool(true);
+    REGB0 = TAG_Bool(1);
   } else {
     fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[2])(fra.me.REG[2]);
@@ -145,20 +199,20 @@ val_t native_interface___ni_metamodel___MMType___from_native(val_t p0, val_t p1)
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//ni_metamodel.nit:46 */
+    /* native_interface/ni_metamodel.nit:54 */
     REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   } else {
-    /* ./native_interface//ni_metamodel.nit:45 */
-    REGB1 = TAG_Bool(false);
+    /* native_interface/ni_metamodel.nit:53 */
+    REGB1 = TAG_Bool(0);
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//ni_metamodel.nit:47 */
+    /* native_interface/ni_metamodel.nit:55 */
     fra.me.REG[2] = CALL_primitive_info___MMType___boxtype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
     goto label1;
   } else {
-    /* ./native_interface//ni_metamodel.nit:49 */
+    /* native_interface/ni_metamodel.nit:57 */
     REGB0 = TAG_Int(3);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_2) {
@@ -172,8 +226,8 @@ val_t native_interface___ni_metamodel___MMType___from_native(val_t p0, val_t p1)
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
     if (!once_value_3) {
-      fra.me.REG[1] = BOX_NativeString(".v");
-      REGB0 = TAG_Int(2);
+      fra.me.REG[1] = BOX_NativeString("->ref.val");
+      REGB0 = TAG_Int(9);
       fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
       once_value_3 = fra.me.REG[1];
       register_static_object(&once_value_3);
@@ -181,7 +235,7 @@ val_t native_interface___ni_metamodel___MMType___from_native(val_t p0, val_t p1)
     fra.me.REG[1] = fra.me.REG[1];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
     fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-    /* ./native_interface//ni_metamodel.nit:51 */
+    /* native_interface/ni_metamodel.nit:59 */
     fra.me.REG[3] = CALL_primitive_info___MMType___boxtype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
     fra.me.REG[2] = fra.me.REG[3];
     goto label1;
@@ -190,6 +244,7 @@ val_t native_interface___ni_metamodel___MMType___from_native(val_t p0, val_t p1)
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMType___assign_to_friendly[] = "ni_metamodel::MMType::assign_to_friendly";
 val_t native_interface___ni_metamodel___MMType___assign_to_friendly(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
@@ -203,10 +258,11 @@ val_t native_interface___ni_metamodel___MMType___assign_to_friendly(val_t p0, va
     static val_t once_value_7; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 55;
+  fra.me.line = 63;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMType___assign_to_friendly;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -216,7 +272,7 @@ val_t native_interface___ni_metamodel___MMType___assign_to_friendly(val_t p0, va
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./native_interface//ni_metamodel.nit:59 */
+  /* native_interface/ni_metamodel.nit:67 */
   fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
@@ -224,7 +280,7 @@ val_t native_interface___ni_metamodel___MMType___assign_to_friendly(val_t p0, va
   } else {
     REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
@@ -233,7 +289,7 @@ val_t native_interface___ni_metamodel___MMType___assign_to_friendly(val_t p0, va
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    REGB0 = TAG_Bool(true);
+    REGB0 = TAG_Bool(1);
   } else {
     fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
@@ -241,16 +297,16 @@ val_t native_interface___ni_metamodel___MMType___assign_to_friendly(val_t p0, va
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//ni_metamodel.nit:60 */
+    /* native_interface/ni_metamodel.nit:68 */
     REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   } else {
-    /* ./native_interface//ni_metamodel.nit:59 */
-    REGB1 = TAG_Bool(false);
+    /* native_interface/ni_metamodel.nit:67 */
+    REGB1 = TAG_Bool(0);
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//ni_metamodel.nit:61 */
+    /* native_interface/ni_metamodel.nit:69 */
     REGB0 = TAG_Int(5);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -286,7 +342,7 @@ val_t native_interface___ni_metamodel___MMType___assign_to_friendly(val_t p0, va
     fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
     goto label4;
   } else {
-    /* ./native_interface//ni_metamodel.nit:63 */
+    /* native_interface/ni_metamodel.nit:71 */
     REGB0 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_5) {
@@ -300,8 +356,8 @@ val_t native_interface___ni_metamodel___MMType___assign_to_friendly(val_t p0, va
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
     if (!once_value_6) {
-      fra.me.REG[1] = BOX_NativeString(".v = ");
-      REGB0 = TAG_Int(5);
+      fra.me.REG[1] = BOX_NativeString("->ref.val = ");
+      REGB0 = TAG_Int(12);
       fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
       once_value_6 = fra.me.REG[1];
       register_static_object(&once_value_6);
@@ -327,6 +383,7 @@ val_t native_interface___ni_metamodel___MMType___assign_to_friendly(val_t p0, va
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMType___assign_from_friendly[] = "ni_metamodel::MMType::assign_from_friendly";
 val_t native_interface___ni_metamodel___MMType___assign_from_friendly(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
@@ -338,14 +395,13 @@ val_t native_interface___ni_metamodel___MMType___assign_from_friendly(val_t p0,
     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_native_interface___ni_metamodel;
-  fra.me.line = 67;
+  fra.me.line = 75;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMType___assign_from_friendly;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -354,7 +410,7 @@ val_t native_interface___ni_metamodel___MMType___assign_from_friendly(val_t p0,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./native_interface//ni_metamodel.nit:71 */
+  /* native_interface/ni_metamodel.nit:79 */
   fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
@@ -362,7 +418,7 @@ val_t native_interface___ni_metamodel___MMType___assign_from_friendly(val_t p0,
   } else {
     REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
@@ -371,7 +427,7 @@ val_t native_interface___ni_metamodel___MMType___assign_from_friendly(val_t p0,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    REGB0 = TAG_Bool(true);
+    REGB0 = TAG_Bool(1);
   } else {
     fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
@@ -379,16 +435,16 @@ val_t native_interface___ni_metamodel___MMType___assign_from_friendly(val_t p0,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//ni_metamodel.nit:72 */
+    /* native_interface/ni_metamodel.nit:80 */
     REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   } else {
-    /* ./native_interface//ni_metamodel.nit:71 */
-    REGB1 = TAG_Bool(false);
+    /* native_interface/ni_metamodel.nit:79 */
+    REGB1 = TAG_Bool(0);
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//ni_metamodel.nit:73 */
+    /* native_interface/ni_metamodel.nit:81 */
     REGB0 = TAG_Int(5);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -424,7 +480,7 @@ val_t native_interface___ni_metamodel___MMType___assign_from_friendly(val_t p0,
     fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
     goto label4;
   } else {
-    /* ./native_interface//ni_metamodel.nit:75 */
+    /* native_interface/ni_metamodel.nit:83 */
     REGB0 = TAG_Int(5);
     fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_5) {
@@ -446,38 +502,16 @@ val_t native_interface___ni_metamodel___MMType___assign_from_friendly(val_t p0,
     } else fra.me.REG[1] = once_value_6;
     fra.me.REG[1] = fra.me.REG[1];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-    REGB0 = TAG_Int(3);
-    fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
     if (!once_value_7) {
-      fra.me.REG[4] = BOX_NativeString("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-      once_value_7 = fra.me.REG[4];
-      register_static_object(&once_value_7);
-    } else fra.me.REG[4] = once_value_7;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-    if (!once_value_8) {
-      fra.me.REG[2] = BOX_NativeString(".v");
-      REGB0 = TAG_Int(2);
+      fra.me.REG[2] = BOX_NativeString("->ref.val");
+      REGB0 = TAG_Int(9);
       fra.me.REG[2] = NEW_String_standard___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;
+      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_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-    fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-    if (!once_value_9) {
-      fra.me.REG[1] = BOX_NativeString("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
-      once_value_9 = fra.me.REG[1];
-      register_static_object(&once_value_9);
-    } else fra.me.REG[1] = once_value_9;
-    fra.me.REG[1] = fra.me.REG[1];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
     fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[3] = fra.me.REG[0];
     goto label4;
@@ -486,6 +520,158 @@ val_t native_interface___ni_metamodel___MMType___assign_from_friendly(val_t p0,
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMType___uses_nitni_ref[] = "ni_metamodel::MMType::uses_nitni_ref";
+val_t native_interface___ni_metamodel___MMType___uses_nitni_ref(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} 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_native_interface___ni_metamodel;
+  fra.me.line = 87;
+  fra.me.meth = LOCATE_native_interface___ni_metamodel___MMType___uses_nitni_ref;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* native_interface/ni_metamodel.nit:87 */
+  fra.me.REG[1] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[1] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[1])(fra.me.REG[1]);
+  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(0);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  if (UNTAG_Bool(REGB0)) {
+    REGB0 = TAG_Bool(1);
+  } else {
+    REGB1 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
+    REGB0 = REGB1;
+  }
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_native_interface___ni_metamodel___MMType___friendly_null_getter[] = "ni_metamodel::MMType::friendly_null_getter";
+val_t native_interface___ni_metamodel___MMType___friendly_null_getter(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t tmp;
+  static val_t once_value_1; /* Once value */
+  static val_t once_value_2; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_native_interface___ni_metamodel;
+  fra.me.line = 89;
+  fra.me.meth = LOCATE_native_interface___ni_metamodel___MMType___friendly_null_getter;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* native_interface/ni_metamodel.nit:91 */
+  REGB0 = TAG_Int(3);
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_1) {
+    fra.me.REG[2] = BOX_NativeString("null_");
+    REGB0 = TAG_Int(5);
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_1 = fra.me.REG[2];
+    register_static_object(&once_value_1);
+  } else fra.me.REG[2] = once_value_1;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  fra.me.REG[0] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_native_interface___ni_metamodel___MMType___mangled_name(fra.me.REG[0])(fra.me.REG[0]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  if (!once_value_2) {
+    fra.me.REG[0] = BOX_NativeString("");
+    REGB0 = TAG_Int(0);
+    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    once_value_2 = fra.me.REG[0];
+    register_static_object(&once_value_2);
+  } else fra.me.REG[0] = once_value_2;
+  fra.me.REG[0] = fra.me.REG[0];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+  goto label3;
+  label3: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+static const char LOCATE_native_interface___ni_metamodel___MMType___local_friendly_null_getter_from[] = "ni_metamodel::MMType::local_friendly_null_getter_from";
+val_t native_interface___ni_metamodel___MMType___local_friendly_null_getter_from(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  static val_t once_value_1; /* Once value */
+  static val_t once_value_2; /* Once value */
+  static val_t once_value_3; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_native_interface___ni_metamodel;
+  fra.me.line = 94;
+  fra.me.meth = LOCATE_native_interface___ni_metamodel___MMType___local_friendly_null_getter_from;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* native_interface/ni_metamodel.nit:96 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  if (!once_value_1) {
+    fra.me.REG[3] = BOX_NativeString("");
+    REGB0 = TAG_Int(0);
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_1 = fra.me.REG[3];
+    register_static_object(&once_value_1);
+  } else fra.me.REG[3] = once_value_1;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  if (!once_value_2) {
+    fra.me.REG[1] = BOX_NativeString("_");
+    REGB0 = TAG_Int(1);
+    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
+    once_value_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];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  fra.me.REG[0] = CALL_native_interface___ni_metamodel___MMType___friendly_null_getter(fra.me.REG[0])(fra.me.REG[0]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  if (!once_value_3) {
+    fra.me.REG[0] = BOX_NativeString("");
+    REGB0 = TAG_Int(0);
+    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    once_value_3 = fra.me.REG[0];
+    register_static_object(&once_value_3);
+  } else fra.me.REG[0] = once_value_3;
+  fra.me.REG[0] = fra.me.REG[0];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+  goto label4;
+  label4: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+static const char LOCATE_native_interface___ni_metamodel___MMMethod___local_friendly_name_from[] = "ni_metamodel::MMMethod::local_friendly_name_from";
 val_t native_interface___ni_metamodel___MMMethod___local_friendly_name_from(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
@@ -495,10 +681,11 @@ val_t native_interface___ni_metamodel___MMMethod___local_friendly_name_from(val_
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 81;
+  fra.me.line = 101;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMMethod___local_friendly_name_from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -507,7 +694,7 @@ val_t native_interface___ni_metamodel___MMMethod___local_friendly_name_from(val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./native_interface//ni_metamodel.nit:85 */
+  /* native_interface/ni_metamodel.nit:105 */
   REGB0 = TAG_Int(5);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -530,7 +717,7 @@ val_t native_interface___ni_metamodel___MMMethod___local_friendly_name_from(val_
   } else fra.me.REG[1] = once_value_2;
   fra.me.REG[1] = fra.me.REG[1];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-  fra.me.REG[2] = CALL_syntax___mmbuilder___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  fra.me.REG[2] = CALL_primitive_info___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("");
@@ -547,6 +734,7 @@ val_t native_interface___ni_metamodel___MMMethod___local_friendly_name_from(val_
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMMethod___friendly_super_cname[] = "ni_metamodel::MMMethod::friendly_super_cname";
 val_t native_interface___ni_metamodel___MMMethod___friendly_super_cname(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -555,15 +743,16 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_super_cname(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_native_interface___ni_metamodel;
-  fra.me.line = 88;
+  fra.me.line = 108;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMMethod___friendly_super_cname;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//ni_metamodel.nit:90 */
+  /* native_interface/ni_metamodel.nit:110 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -576,7 +765,7 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_super_cname(val_t p0
   fra.me.REG[2] = fra.me.REG[2];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_syntax___mmbuilder___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  fra.me.REG[2] = CALL_primitive_info___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString("___super");
@@ -593,6 +782,7 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_super_cname(val_t p0
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMMethod___local_friendly_super_name_from[] = "ni_metamodel::MMMethod::local_friendly_super_name_from";
 val_t native_interface___ni_metamodel___MMMethod___local_friendly_super_name_from(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -602,17 +792,18 @@ val_t native_interface___ni_metamodel___MMMethod___local_friendly_super_name_fro
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 93;
+  fra.me.line = 113;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMMethod___local_friendly_super_name_from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//ni_metamodel.nit:95 */
+  /* native_interface/ni_metamodel.nit:115 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -652,10 +843,12 @@ val_t native_interface___ni_metamodel___MMMethod___local_friendly_super_name_fro
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMMethod___friendly_cparams[] = "ni_metamodel::MMMethod::friendly_cparams";
 val_t native_interface___ni_metamodel___MMMethod___friendly_cparams(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
     static val_t once_value_1; /* Once value */
     static val_t once_value_2; /* Once value */
@@ -664,10 +857,11 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_cparams(val_t p0, va
       static val_t once_value_5; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 98;
+  fra.me.line = 118;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMMethod___friendly_cparams;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -676,13 +870,14 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_cparams(val_t p0, va
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//ni_metamodel.nit:100 */
+  /* native_interface/ni_metamodel.nit:120 */
   fra.me.REG[2] = NEW_List_standard___collection___list___List___init();
-  /* ./native_interface//ni_metamodel.nit:102 */
-  REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
+  /* native_interface/ni_metamodel.nit:122 */
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//ni_metamodel.nit:103 */
+    /* native_interface/ni_metamodel.nit:123 */
     REGB0 = TAG_Int(3);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -709,45 +904,50 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_cparams(val_t p0, va
     fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   }
-  /* ./native_interface//ni_metamodel.nit:106 */
+  /* native_interface/ni_metamodel.nit:126 */
   fra.me.REG[0] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 106);
+    nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 126);
   }
   fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:235 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ../lib/standard/collection/array.nit:724 */
       fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-      /* ./native_interface//ni_metamodel.nit:107 */
+      /* native_interface/ni_metamodel.nit:127 */
       REGB1 = TAG_Int(5);
       fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
       if (!once_value_3) {
@@ -785,24 +985,25 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_cparams(val_t p0, va
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
       fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:238 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label6;
     }
   }
   label6: while(0);
-  /* ./native_interface//ni_metamodel.nit:110 */
+  /* native_interface/ni_metamodel.nit:130 */
   goto label7;
   label7: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMMethod___csignature_with_suffix[] = "ni_metamodel::MMMethod::csignature_with_suffix";
 val_t native_interface___ni_metamodel___MMMethod___csignature_with_suffix(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
@@ -812,10 +1013,11 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_suffix(val_t
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 113;
+  fra.me.line = 133;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMMethod___csignature_with_suffix;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -824,7 +1026,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_suffix(val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./native_interface//ni_metamodel.nit:115 */
+  /* native_interface/ni_metamodel.nit:135 */
   REGB0 = TAG_Int(5);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -836,7 +1038,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_suffix(val_t
   } else fra.me.REG[4] = once_value_1;
   fra.me.REG[4] = fra.me.REG[4];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  fra.me.REG[4] = CALL_syntax___mmbuilder___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  fra.me.REG[4] = CALL_primitive_info___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("");
@@ -858,13 +1060,14 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_suffix(val_t
   fra.me.REG[1] = fra.me.REG[1];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./native_interface//ni_metamodel.nit:117 */
+  /* native_interface/ni_metamodel.nit:137 */
   fra.me.REG[2] = CALL_native_interface___ni_metamodel___MMMethod___csignature_with_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
   goto label4;
   label4: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMMethod___csignature_with_name[] = "ni_metamodel::MMMethod::csignature_with_name";
 val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
@@ -880,10 +1083,11 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
   static val_t once_value_8; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 120;
+  fra.me.line = 140;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMMethod___csignature_with_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -893,13 +1097,13 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./native_interface//ni_metamodel.nit:122 */
+  /* native_interface/ni_metamodel.nit:142 */
   fra.me.REG[3] = NEW_Buffer_standard___string___Buffer___init();
-  /* ./native_interface//ni_metamodel.nit:125 */
+  /* native_interface/ni_metamodel.nit:145 */
   fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 125);
+    nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 145);
   }
   fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
@@ -907,7 +1111,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
   } else {
     REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
@@ -916,7 +1120,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//ni_metamodel.nit:126 */
+    /* native_interface/ni_metamodel.nit:146 */
     REGB0 = TAG_Int(3);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -931,12 +1135,12 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
     fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 126);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 146);
     }
     fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[5])(fra.me.REG[5]);
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 126);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 146);
     }
     fra.me.REG[5] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(fra.me.REG[5])(fra.me.REG[5]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
@@ -952,10 +1156,11 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   } else {
-    /* ./native_interface//ni_metamodel.nit:127 */
-    REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
+    /* native_interface/ni_metamodel.nit:147 */
+    fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
+    REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./native_interface//ni_metamodel.nit:128 */
+      /* native_interface/ni_metamodel.nit:148 */
       REGB0 = TAG_Int(3);
       fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_3) {
@@ -982,7 +1187,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
       fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
       CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
     } else {
-      /* ./native_interface//ni_metamodel.nit:130 */
+      /* native_interface/ni_metamodel.nit:150 */
       if (!once_value_5) {
         fra.me.REG[4] = BOX_NativeString("void ");
         REGB0 = TAG_Int(5);
@@ -994,13 +1199,13 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
       CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
     }
   }
-  /* ./native_interface//ni_metamodel.nit:134 */
+  /* native_interface/ni_metamodel.nit:154 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
@@ -1008,16 +1213,16 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//ni_metamodel.nit:135 */
-    fra.me.REG[4] = CALL_syntax___mmbuilder___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+    /* native_interface/ni_metamodel.nit:155 */
+    fra.me.REG[4] = CALL_primitive_info___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   } else {
-    /* ./native_interface//ni_metamodel.nit:137 */
+    /* native_interface/ni_metamodel.nit:157 */
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   }
-  /* ./native_interface//ni_metamodel.nit:141 */
+  /* native_interface/ni_metamodel.nit:161 */
   fra.me.REG[2] = CALL_native_interface___ni_metamodel___MMMethod___friendly_cparams(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-  /* ./native_interface//ni_metamodel.nit:143 */
+  /* native_interface/ni_metamodel.nit:163 */
   REGB0 = TAG_Int(3);
   fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_6) {
@@ -1050,49 +1255,53 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
-  /* ./native_interface//ni_metamodel.nit:145 */
+  /* native_interface/ni_metamodel.nit:165 */
   fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
   goto label9;
   label9: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMMethod___friendly_csignature[] = "ni_metamodel::MMMethod::friendly_csignature";
 val_t native_interface___ni_metamodel___MMMethod___friendly_csignature(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_native_interface___ni_metamodel;
-  fra.me.line = 148;
+  fra.me.line = 168;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMMethod___friendly_csignature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//ni_metamodel.nit:150 */
+  /* native_interface/ni_metamodel.nit:170 */
   fra.me.REG[1] = CALL_native_interface___ni_metamodel___MMMethod___csignature_with_name(fra.me.REG[0])(fra.me.REG[0], NIT_NULL, fra.me.REG[1]);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMMethod___frontier_csignature_from[] = "ni_metamodel::MMMethod::frontier_csignature_from";
 val_t native_interface___ni_metamodel___MMMethod___frontier_csignature_from(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 153;
+  fra.me.line = 173;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMMethod___frontier_csignature_from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./native_interface//ni_metamodel.nit:155 */
+  /* native_interface/ni_metamodel.nit:175 */
   fra.me.REG[1] = CALL_native_interface___ni_metamodel___MMMethod___local_friendly_name_from(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
   fra.me.REG[2] = CALL_native_interface___ni_metamodel___MMMethod___csignature_with_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
   goto label1;
@@ -1100,6 +1309,7 @@ val_t native_interface___ni_metamodel___MMMethod___frontier_csignature_from(val_
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMMethod___friendly_super_csignature[] = "ni_metamodel::MMMethod::friendly_super_csignature";
 val_t native_interface___ni_metamodel___MMMethod___friendly_super_csignature(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -1107,15 +1317,16 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_super_csignature(val
   static val_t once_value_1; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 158;
+  fra.me.line = 178;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMMethod___friendly_super_csignature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//ni_metamodel.nit:160 */
+  /* native_interface/ni_metamodel.nit:180 */
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("___super");
     REGB0 = TAG_Int(8);
@@ -1131,21 +1342,23 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_super_csignature(val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMMethod___frontier_super_csignature_from[] = "ni_metamodel::MMMethod::frontier_super_csignature_from";
 val_t native_interface___ni_metamodel___MMMethod___frontier_super_csignature_from(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 163;
+  fra.me.line = 183;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMMethod___frontier_super_csignature_from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//ni_metamodel.nit:165 */
+  /* native_interface/ni_metamodel.nit:185 */
   fra.me.REG[1] = CALL_native_interface___ni_metamodel___MMMethod___local_friendly_super_name_from(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_native_interface___ni_metamodel___MMMethod___csignature_with_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
@@ -1154,6 +1367,7 @@ val_t native_interface___ni_metamodel___MMMethod___frontier_super_csignature_fro
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMMethod___impl_csignature[] = "ni_metamodel::MMMethod::impl_csignature";
 val_t native_interface___ni_metamodel___MMMethod___impl_csignature(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -1161,15 +1375,16 @@ val_t native_interface___ni_metamodel___MMMethod___impl_csignature(val_t p0){
   static val_t once_value_1; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 168;
+  fra.me.line = 188;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMMethod___impl_csignature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//ni_metamodel.nit:170 */
+  /* native_interface/ni_metamodel.nit:190 */
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("___impl");
     REGB0 = TAG_Int(7);
@@ -1185,20 +1400,23 @@ val_t native_interface___ni_metamodel___MMMethod___impl_csignature(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMMethod___cparams[] = "ni_metamodel::MMMethod::cparams";
 val_t native_interface___ni_metamodel___MMMethod___cparams(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
     static val_t once_value_1; /* Once value */
       static val_t once_value_2; /* Once value */
       static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 173;
+  fra.me.line = 193;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMMethod___cparams;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -1206,13 +1424,13 @@ val_t native_interface___ni_metamodel___MMMethod___cparams(val_t p0){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//ni_metamodel.nit:176 */
+  /* native_interface/ni_metamodel.nit:196 */
   fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  /* ./native_interface//ni_metamodel.nit:178 */
-  REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
+  /* native_interface/ni_metamodel.nit:197 */
+  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//ni_metamodel.nit:179 */
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("val_t recv");
       REGB0 = TAG_Int(10);
@@ -1223,45 +1441,50 @@ val_t native_interface___ni_metamodel___MMMethod___cparams(val_t p0){
     fra.me.REG[2] = fra.me.REG[2];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
-  /* ./native_interface//ni_metamodel.nit:182 */
+  /* native_interface/ni_metamodel.nit:198 */
   fra.me.REG[0] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 182);
+    nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 198);
   }
   fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ../lib/standard/kernel.nit:235 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ../lib/standard/collection/array.nit:724 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ./native_interface//ni_metamodel.nit:183 */
+      /* native_interface/ni_metamodel.nit:198 */
       REGB1 = TAG_Int(3);
       fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
       if (!once_value_2) {
@@ -1287,24 +1510,25 @@ val_t native_interface___ni_metamodel___MMMethod___cparams(val_t p0){
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
       fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:238 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label4;
     }
   }
   label4: while(0);
-  /* ./native_interface//ni_metamodel.nit:186 */
+  /* native_interface/ni_metamodel.nit:199 */
   goto label5;
   label5: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMMethod___out_csignature[] = "ni_metamodel::MMMethod::out_csignature";
 val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -1322,22 +1546,23 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
   static val_t once_value_10; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 189;
+  fra.me.line = 202;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMMethod___out_csignature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//ni_metamodel.nit:191 */
+  /* native_interface/ni_metamodel.nit:204 */
   fra.me.REG[1] = NEW_Buffer_standard___string___Buffer___init();
-  /* ./native_interface//ni_metamodel.nit:194 */
+  /* native_interface/ni_metamodel.nit:207 */
   fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 194);
+    nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 207);
   }
   fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
@@ -1345,7 +1570,7 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
   } else {
     REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
@@ -1354,13 +1579,14 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    REGB0 = TAG_Bool(true);
+    REGB0 = TAG_Bool(1);
   } else {
-    REGB1 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
+    REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//ni_metamodel.nit:195 */
+    /* native_interface/ni_metamodel.nit:208 */
     if (!once_value_1) {
       fra.me.REG[2] = BOX_NativeString("val_t ");
       REGB0 = TAG_Int(6);
@@ -1371,7 +1597,7 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
     fra.me.REG[2] = fra.me.REG[2];
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   } else {
-    /* ./native_interface//ni_metamodel.nit:197 */
+    /* native_interface/ni_metamodel.nit:210 */
     if (!once_value_2) {
       fra.me.REG[2] = BOX_NativeString("void ");
       REGB0 = TAG_Int(5);
@@ -1382,10 +1608,11 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
     fra.me.REG[2] = fra.me.REG[2];
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
-  /* ./native_interface//ni_metamodel.nit:201 */
-  REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
+  /* native_interface/ni_metamodel.nit:214 */
+  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//ni_metamodel.nit:202 */
+    /* native_interface/ni_metamodel.nit:215 */
     REGB0 = TAG_Int(5);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_3) {
@@ -1423,7 +1650,7 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
     fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   } else {
-    /* ./native_interface//ni_metamodel.nit:204 */
+    /* native_interface/ni_metamodel.nit:217 */
     REGB0 = TAG_Int(3);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_6) {
@@ -1436,7 +1663,7 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
     fra.me.REG[3] = fra.me.REG[3];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
     fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[3] = CALL_syntax___mmbuilder___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
+    fra.me.REG[3] = CALL_primitive_info___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
     if (!once_value_7) {
       fra.me.REG[3] = BOX_NativeString("___out");
@@ -1450,7 +1677,7 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
     fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
-  /* ./native_interface//ni_metamodel.nit:208 */
+  /* native_interface/ni_metamodel.nit:221 */
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_8) {
@@ -1484,53 +1711,58 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./native_interface//ni_metamodel.nit:210 */
+  /* native_interface/ni_metamodel.nit:223 */
   fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
   goto label11;
   label11: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMImportedCast___in_name[] = "ni_metamodel::MMImportedCast::in_name";
 val_t native_interface___ni_metamodel___MMImportedCast___in_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_native_interface___ni_metamodel;
-  fra.me.line = 216;
+  fra.me.line = 229;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMImportedCast___in_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//ni_metamodel.nit:216 */
+  /* native_interface/ni_metamodel.nit:229 */
   REGB0 = TAG_Bool(ATTR_native_interface___ni_metamodel___MMImportedCast_____atin_name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@in_name", LOCATE_native_interface___ni_metamodel, 216);
+    nit_abort("Uninitialized attribute %s", "@in_name", LOCATE_native_interface___ni_metamodel, 229);
   }
   fra.me.REG[0] = ATTR_native_interface___ni_metamodel___MMImportedCast_____atin_name(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMImportedCast___in_name__eq[] = "ni_metamodel::MMImportedCast::in_name=";
 void native_interface___ni_metamodel___MMImportedCast___in_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_native_interface___ni_metamodel;
-  fra.me.line = 216;
+  fra.me.line = 229;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMImportedCast___in_name__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//ni_metamodel.nit:216 */
+  /* native_interface/ni_metamodel.nit:229 */
   ATTR_native_interface___ni_metamodel___MMImportedCast_____atin_name(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name[] = "ni_metamodel::MMImportedCast::as_friendly_extern_name";
 val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -1544,22 +1776,23 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name
     static val_t once_value_8; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 218;
+  fra.me.line = 231;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//ni_metamodel.nit:219 */
+  /* native_interface/ni_metamodel.nit:232 */
   REGB0 = CALL_metamodel___static_type___MMImportedCast___is_about_nullable_only(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//ni_metamodel.nit:220 */
+    /* native_interface/ni_metamodel.nit:233 */
     REGB0 = CALL_metamodel___static_type___MMImportedCast___is_not_null_to_nullable(fra.me.REG[0])(fra.me.REG[0]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./native_interface//ni_metamodel.nit:222 */
+      /* native_interface/ni_metamodel.nit:235 */
       REGB0 = TAG_Int(3);
       fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_1) {
@@ -1572,7 +1805,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name
       fra.me.REG[2] = fra.me.REG[2];
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
       fra.me.REG[2] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
-      fra.me.REG[2] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(fra.me.REG[2])(fra.me.REG[2]);
+      fra.me.REG[2] = CALL_native_interface___ni_metamodel___MMType___mangled_name(fra.me.REG[2])(fra.me.REG[2]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
       if (!once_value_2) {
         fra.me.REG[2] = BOX_NativeString("_as_nullable");
@@ -1586,10 +1819,10 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name
       fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
       goto label3;
     } else {
-      /* ./native_interface//ni_metamodel.nit:223 */
+      /* native_interface/ni_metamodel.nit:236 */
       REGB0 = CALL_metamodel___static_type___MMImportedCast___is_nullable_to_not_null(fra.me.REG[0])(fra.me.REG[0]);
       if (UNTAG_Bool(REGB0)) {
-        /* ./native_interface//ni_metamodel.nit:225 */
+        /* native_interface/ni_metamodel.nit:238 */
         REGB0 = TAG_Int(3);
         fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
         if (!once_value_4) {
@@ -1602,7 +1835,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name
         fra.me.REG[3] = fra.me.REG[3];
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
         fra.me.REG[3] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
-        fra.me.REG[3] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(fra.me.REG[3])(fra.me.REG[3]);
+        fra.me.REG[3] = CALL_native_interface___ni_metamodel___MMType___mangled_name(fra.me.REG[3])(fra.me.REG[3]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
         if (!once_value_5) {
           fra.me.REG[3] = BOX_NativeString("_as_not_null");
@@ -1617,12 +1850,12 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name
         fra.me.REG[1] = fra.me.REG[2];
         goto label3;
       } else {
-        /* ./native_interface//ni_metamodel.nit:227 */
-        nit_abort("Aborted", NULL, LOCATE_native_interface___ni_metamodel, 227);
+        /* native_interface/ni_metamodel.nit:240 */
+        nit_abort("Aborted", NULL, LOCATE_native_interface___ni_metamodel, 240);
       }
     }
   } else {
-    /* ./native_interface//ni_metamodel.nit:231 */
+    /* native_interface/ni_metamodel.nit:244 */
     REGB0 = TAG_Int(5);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_6) {
@@ -1635,7 +1868,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name
     fra.me.REG[3] = fra.me.REG[3];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
     fra.me.REG[3] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[3] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(fra.me.REG[3])(fra.me.REG[3]);
+    fra.me.REG[3] = CALL_native_interface___ni_metamodel___MMType___mangled_name(fra.me.REG[3])(fra.me.REG[3]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
     if (!once_value_7) {
       fra.me.REG[3] = BOX_NativeString("_as_");
@@ -1647,7 +1880,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name
     fra.me.REG[3] = fra.me.REG[3];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
     fra.me.REG[0] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[0] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[0] = CALL_native_interface___ni_metamodel___MMType___mangled_name(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
     if (!once_value_8) {
       fra.me.REG[0] = BOX_NativeString("");
@@ -1666,6 +1899,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_name
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMImportedCast___as_local_cname[] = "ni_metamodel::MMImportedCast::as_local_cname";
 val_t native_interface___ni_metamodel___MMImportedCast___as_local_cname(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -1675,17 +1909,18 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_local_cname(val_t p0
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 235;
+  fra.me.line = 248;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMImportedCast___as_local_cname;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//ni_metamodel.nit:236 */
+  /* native_interface/ni_metamodel.nit:249 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -1725,6 +1960,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_local_cname(val_t p0
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMImportedCast___as_local_csignature[] = "ni_metamodel::MMImportedCast::as_local_csignature";
 val_t native_interface___ni_metamodel___MMImportedCast___as_local_csignature(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -1736,17 +1972,18 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_local_csignature(val
   static val_t once_value_5; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 239;
+  fra.me.line = 252;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMImportedCast___as_local_csignature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//ni_metamodel.nit:241 */
+  /* native_interface/ni_metamodel.nit:254 */
   REGB0 = TAG_Int(9);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -1810,6 +2047,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_local_csignature(val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMImportedCast___as_friendly_csignature[] = "ni_metamodel::MMImportedCast::as_friendly_csignature";
 val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_csignature(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -1821,15 +2059,16 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_csignature(
   static val_t once_value_5; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 244;
+  fra.me.line = 257;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMImportedCast___as_friendly_csignature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//ni_metamodel.nit:246 */
+  /* native_interface/ni_metamodel.nit:259 */
   REGB0 = TAG_Int(9);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -1893,6 +2132,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___as_friendly_csignature(
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_name[] = "ni_metamodel::MMImportedCast::is_a_friendly_extern_name";
 val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_name(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -1904,28 +2144,29 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_na
     static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 249;
+  fra.me.line = 262;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//ni_metamodel.nit:250 */
+  /* native_interface/ni_metamodel.nit:263 */
   REGB0 = CALL_metamodel___static_type___MMImportedCast___is_about_nullable_only(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//ni_metamodel.nit:251 */
+    /* native_interface/ni_metamodel.nit:264 */
     REGB0 = CALL_metamodel___static_type___MMImportedCast___is_not_null_to_nullable(fra.me.REG[0])(fra.me.REG[0]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./native_interface//ni_metamodel.nit:252 */
-      nit_abort("Aborted", NULL, LOCATE_native_interface___ni_metamodel, 252);
+      /* native_interface/ni_metamodel.nit:265 */
+      nit_abort("Aborted", NULL, LOCATE_native_interface___ni_metamodel, 265);
     } else {
-      /* ./native_interface//ni_metamodel.nit:253 */
+      /* native_interface/ni_metamodel.nit:266 */
       REGB0 = CALL_metamodel___static_type___MMImportedCast___is_nullable_to_not_null(fra.me.REG[0])(fra.me.REG[0]);
       if (UNTAG_Bool(REGB0)) {
-        /* ./native_interface//ni_metamodel.nit:256 */
+        /* native_interface/ni_metamodel.nit:269 */
         REGB0 = TAG_Int(3);
         fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
         if (!once_value_1) {
@@ -1938,8 +2179,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_na
         fra.me.REG[2] = fra.me.REG[2];
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
         fra.me.REG[2] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
-        fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
-        fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+        fra.me.REG[2] = CALL_native_interface___ni_metamodel___MMType___mangled_name(fra.me.REG[2])(fra.me.REG[2]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
         if (!once_value_2) {
           fra.me.REG[2] = BOX_NativeString("_is_null");
@@ -1953,12 +2193,12 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_na
         fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
         goto label3;
       } else {
-        /* ./native_interface//ni_metamodel.nit:258 */
-        nit_abort("Aborted", NULL, LOCATE_native_interface___ni_metamodel, 258);
+        /* native_interface/ni_metamodel.nit:271 */
+        nit_abort("Aborted", NULL, LOCATE_native_interface___ni_metamodel, 271);
       }
     }
   } else {
-    /* ./native_interface//ni_metamodel.nit:262 */
+    /* native_interface/ni_metamodel.nit:275 */
     REGB0 = TAG_Int(5);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_4) {
@@ -1971,7 +2211,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_na
     fra.me.REG[3] = fra.me.REG[3];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
     fra.me.REG[3] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[3] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(fra.me.REG[3])(fra.me.REG[3]);
+    fra.me.REG[3] = CALL_native_interface___ni_metamodel___MMType___mangled_name(fra.me.REG[3])(fra.me.REG[3]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
     if (!once_value_5) {
       fra.me.REG[3] = BOX_NativeString("_is_a_");
@@ -1983,7 +2223,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_na
     fra.me.REG[3] = fra.me.REG[3];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
     fra.me.REG[0] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[0] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[0] = CALL_native_interface___ni_metamodel___MMType___mangled_name(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
     if (!once_value_6) {
       fra.me.REG[0] = BOX_NativeString("");
@@ -2002,6 +2242,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_na
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMImportedCast___is_a_local_cname[] = "ni_metamodel::MMImportedCast::is_a_local_cname";
 val_t native_interface___ni_metamodel___MMImportedCast___is_a_local_cname(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -2011,17 +2252,18 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_local_cname(val_t
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 266;
+  fra.me.line = 279;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMImportedCast___is_a_local_cname;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//ni_metamodel.nit:267 */
+  /* native_interface/ni_metamodel.nit:280 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2061,6 +2303,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_local_cname(val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMImportedCast___is_a_local_csignature[] = "ni_metamodel::MMImportedCast::is_a_local_csignature";
 val_t native_interface___ni_metamodel___MMImportedCast___is_a_local_csignature(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -2071,17 +2314,18 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_local_csignature(v
   static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 270;
+  fra.me.line = 283;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMImportedCast___is_a_local_csignature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//ni_metamodel.nit:274 */
+  /* native_interface/ni_metamodel.nit:287 */
   REGB0 = TAG_Int(7);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2133,6 +2377,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_local_csignature(v
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMImportedCast___is_a_friendly_csignature[] = "ni_metamodel::MMImportedCast::is_a_friendly_csignature";
 val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_csignature(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -2143,15 +2388,16 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_csignatur
   static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 277;
+  fra.me.line = 290;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMImportedCast___is_a_friendly_csignature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//ni_metamodel.nit:279 */
+  /* native_interface/ni_metamodel.nit:292 */
   REGB0 = TAG_Int(7);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2203,6 +2449,7 @@ val_t native_interface___ni_metamodel___MMImportedCast___is_a_friendly_csignatur
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_native_interface___ni_metamodel___MMImportedCast___hash[] = "ni_metamodel::MMImportedCast::(hash::Object::hash)";
 val_t native_interface___ni_metamodel___MMImportedCast___hash(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -2210,21 +2457,22 @@ val_t native_interface___ni_metamodel___MMImportedCast___hash(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___ni_metamodel;
-  fra.me.line = 282;
+  fra.me.line = 295;
   fra.me.meth = LOCATE_native_interface___ni_metamodel___MMImportedCast___hash;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//ni_metamodel.nit:284 */
+  /* native_interface/ni_metamodel.nit:297 */
   fra.me.REG[1] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___hash___Object___hash(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[0] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = CALL_standard___hash___Object___hash(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ../lib/standard/kernel.nit:238 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./native_interface//ni_metamodel.nit:284 */
+  /* native_interface/ni_metamodel.nit:297 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;