use nitg to bootstrap; drop bootstrap of nitc
[nit.git] / c_src / native_interface___ni_metamodel._sep.c
diff --git a/c_src/native_interface___ni_metamodel._sep.c b/c_src/native_interface___ni_metamodel._sep.c
deleted file mode 100644 (file)
index 51fd894..0000000
+++ /dev/null
@@ -1,2480 +0,0 @@
-/* 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;
-  val_t REGB1;
-  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 = 26;
-  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 */
-  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 */
-  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 */
-    REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-    if (!once_value_1) {
-      fra.me.REG[3] = BOX_NativeString("nullable_");
-      REGB0 = TAG_Int(9);
-      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(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[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]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-    if (!once_value_2) {
-      fra.me.REG[3] = BOX_NativeString("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
-      once_value_2 = fra.me.REG[3];
-      register_static_object(&once_value_2);
-    } else fra.me.REG[3] = once_value_2;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-    fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-    goto label3;
-  } else {
-    /* 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(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)) {
-      /* 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:36 */
-      REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        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] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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;
-  val_t REGB1;
-  val_t tmp;
-    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 = 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;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[4] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* 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);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-      REGB0 = REGB1;
-    }
-  }
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-    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]);
-    REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[2])(fra.me.REG[2]);
-    REGB0 = REGB1;
-  }
-  if (UNTAG_Bool(REGB0)) {
-    /* 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:53 */
-    REGB1 = TAG_Bool(0);
-    REGB0 = REGB1;
-  }
-  if (UNTAG_Bool(REGB0)) {
-    /* 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:57 */
-    REGB0 = TAG_Int(3);
-    fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-    if (!once_value_2) {
-      fra.me.REG[4] = BOX_NativeString("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
-      once_value_2 = fra.me.REG[4];
-      register_static_object(&once_value_2);
-    } else fra.me.REG[4] = once_value_2;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[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("->ref.val");
-      REGB0 = TAG_Int(9);
-      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
-      once_value_3 = fra.me.REG[1];
-      register_static_object(&once_value_3);
-    } else fra.me.REG[1] = once_value_3;
-    fra.me.REG[1] = fra.me.REG[1];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[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: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;
-  }
-  label1: while(0);
-  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;
-  val_t REGB1;
-  val_t tmp;
-    static val_t once_value_1; /* Once value */
-    static val_t once_value_2; /* Once value */
-    static val_t once_value_3; /* Once value */
-    static val_t once_value_5; /* Once value */
-    static val_t once_value_6; /* Once value */
-    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 = 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;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[4] = NIT_NULL;
-  fra.me.REG[5] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  fra.me.REG[2] = p2;
-  /* 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);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
-      REGB0 = REGB1;
-    }
-  }
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-    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]);
-    REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[3])(fra.me.REG[3]);
-    REGB0 = REGB1;
-  }
-  if (UNTAG_Bool(REGB0)) {
-    /* 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:67 */
-    REGB1 = TAG_Bool(0);
-    REGB0 = REGB1;
-  }
-  if (UNTAG_Bool(REGB0)) {
-    /* 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) {
-      fra.me.REG[4] = BOX_NativeString("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
-      once_value_1 = fra.me.REG[4];
-      register_static_object(&once_value_1);
-    } 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]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-    if (!once_value_2) {
-      fra.me.REG[4] = BOX_NativeString(" = ");
-      REGB0 = TAG_Int(3);
-      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
-      once_value_2 = fra.me.REG[4];
-      register_static_object(&once_value_2);
-    } else fra.me.REG[4] = once_value_2;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-    fra.me.REG[4] = CALL_primitive_info___MMType___unboxtype(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_3) {
-      fra.me.REG[4] = BOX_NativeString("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
-      once_value_3 = fra.me.REG[4];
-      register_static_object(&once_value_3);
-    } else fra.me.REG[4] = once_value_3;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-    fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-    goto label4;
-  } else {
-    /* 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) {
-      fra.me.REG[5] = BOX_NativeString("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
-      once_value_5 = fra.me.REG[5];
-      register_static_object(&once_value_5);
-    } else fra.me.REG[5] = once_value_5;
-    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]);
-    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("->ref.val = ");
-      REGB0 = TAG_Int(12);
-      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
-      once_value_6 = fra.me.REG[1];
-      register_static_object(&once_value_6);
-    } 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[4])(fra.me.REG[4], fra.me.REG[1]);
-    fra.me.REG[2] = CALL_primitive_info___MMType___unboxtype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
-    if (!once_value_7) {
-      fra.me.REG[2] = BOX_NativeString("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
-      once_value_7 = fra.me.REG[2];
-      register_static_object(&once_value_7);
-    } else fra.me.REG[2] = once_value_7;
-    fra.me.REG[2] = fra.me.REG[2];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
-    fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-    fra.me.REG[3] = fra.me.REG[4];
-    goto label4;
-  }
-  label4: while(0);
-  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;
-  val_t REGB1;
-  val_t tmp;
-    static val_t once_value_1; /* Once value */
-    static val_t once_value_2; /* Once value */
-    static val_t once_value_3; /* Once value */
-    static val_t once_value_5; /* Once value */
-    static val_t once_value_6; /* Once value */
-    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 = 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;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[4] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  fra.me.REG[2] = p2;
-  /* 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);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
-      REGB0 = REGB1;
-    }
-  }
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-    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]);
-    REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[3])(fra.me.REG[3]);
-    REGB0 = REGB1;
-  }
-  if (UNTAG_Bool(REGB0)) {
-    /* 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:79 */
-    REGB1 = TAG_Bool(0);
-    REGB0 = REGB1;
-  }
-  if (UNTAG_Bool(REGB0)) {
-    /* 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) {
-      fra.me.REG[4] = BOX_NativeString("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
-      once_value_1 = fra.me.REG[4];
-      register_static_object(&once_value_1);
-    } 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]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-    if (!once_value_2) {
-      fra.me.REG[4] = BOX_NativeString(" = ");
-      REGB0 = TAG_Int(3);
-      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
-      once_value_2 = fra.me.REG[4];
-      register_static_object(&once_value_2);
-    } else fra.me.REG[4] = once_value_2;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-    fra.me.REG[0] = CALL_primitive_info___MMType___boxtype(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[0]);
-    if (!once_value_3) {
-      fra.me.REG[0] = BOX_NativeString("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(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[3])(fra.me.REG[3], fra.me.REG[0]);
-    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:83 */
-    REGB0 = TAG_Int(5);
-    fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-    if (!once_value_5) {
-      fra.me.REG[4] = BOX_NativeString("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
-      once_value_5 = fra.me.REG[4];
-      register_static_object(&once_value_5);
-    } else fra.me.REG[4] = once_value_5;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-    if (!once_value_6) {
-      fra.me.REG[1] = BOX_NativeString(" = ");
-      REGB0 = TAG_Int(3);
-      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
-      once_value_6 = fra.me.REG[1];
-      register_static_object(&once_value_6);
-    } 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]);
-    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[2] = BOX_NativeString("->ref.val");
-      REGB0 = TAG_Int(9);
-      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
-      once_value_7 = fra.me.REG[2];
-      register_static_object(&once_value_7);
-    } else fra.me.REG[2] = once_value_7;
-    fra.me.REG[2] = fra.me.REG[2];
-    CALL_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;
-  }
-  label4: while(0);
-  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] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(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] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(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] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(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] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(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;
-  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 = 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;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[4] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  fra.me.REG[2] = p2;
-  /* 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) {
-    fra.me.REG[4] = BOX_NativeString("");
-    REGB0 = TAG_Int(0);
-    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
-    once_value_1 = fra.me.REG[4];
-    register_static_object(&once_value_1);
-  } 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[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[3])(fra.me.REG[3], fra.me.REG[1]);
-  if (!once_value_2) {
-    fra.me.REG[1] = BOX_NativeString("_");
-    REGB0 = TAG_Int(1);
-    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(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[3])(fra.me.REG[3], fra.me.REG[1]);
-  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("");
-    REGB0 = TAG_Int(0);
-    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
-    once_value_3 = fra.me.REG[2];
-    register_static_object(&once_value_3);
-  } else fra.me.REG[2] = once_value_3;
-  fra.me.REG[2] = fra.me.REG[2];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-  goto label4;
-  label4: while(0);
-  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;
-  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 = 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:110 */
-  REGB0 = TAG_Int(3);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_1) {
-    fra.me.REG[2] = BOX_NativeString("");
-    REGB0 = TAG_Int(0);
-    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
-    once_value_1 = fra.me.REG[2];
-    register_static_object(&once_value_1);
-  } else fra.me.REG[2] = once_value_1;
-  fra.me.REG[2] = fra.me.REG[2];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_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");
-    REGB0 = TAG_Int(8);
-    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
-    once_value_2 = fra.me.REG[2];
-    register_static_object(&once_value_2);
-  } else fra.me.REG[2] = once_value_2;
-  fra.me.REG[2] = fra.me.REG[2];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
-  goto label3;
-  label3: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-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;
-  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 = 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:115 */
-  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] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(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] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(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___MMMethod___friendly_super_cname(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] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(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___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 */
-      static val_t once_value_3; /* Once value */
-      static val_t once_value_4; /* Once value */
-      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 = 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;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[4] = NIT_NULL;
-  fra.me.REG[5] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* native_interface/ni_metamodel.nit:120 */
-  fra.me.REG[2] = NEW_List_standard___collection___list___List___init();
-  /* 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:123 */
-    REGB0 = TAG_Int(3);
-    fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-    if (!once_value_1) {
-      fra.me.REG[4] = BOX_NativeString("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
-      once_value_1 = fra.me.REG[4];
-      register_static_object(&once_value_1);
-    } 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[1] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
-    fra.me.REG[1] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(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]);
-    if (!once_value_2) {
-      fra.me.REG[1] = BOX_NativeString(" recv");
-      REGB0 = TAG_Int(5);
-      fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(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[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]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  }
-  /* 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, 126);
-  }
-  fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:270 */
-  REGB0 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:271 */
-  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, 271);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:272 */
-  fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:273 */
-  while(1) {
-    /* ../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, 24);
-    }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:273 */
-    if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:274 */
-      REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
-      }
-      /* ../lib/standard/collection/array.nit:725 */
-      fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-      /* 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) {
-        fra.me.REG[5] = BOX_NativeString("");
-        REGB1 = TAG_Int(0);
-        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
-        once_value_3 = fra.me.REG[5];
-        register_static_object(&once_value_3);
-      } else fra.me.REG[5] = once_value_3;
-      fra.me.REG[5] = fra.me.REG[5];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-      fra.me.REG[5] = CALL_metamodel___static_type___MMParam___mmtype(fra.me.REG[1])(fra.me.REG[1]);
-      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]);
-      if (!once_value_4) {
-        fra.me.REG[5] = BOX_NativeString(" ");
-        REGB1 = TAG_Int(1);
-        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
-        once_value_4 = fra.me.REG[5];
-        register_static_object(&once_value_4);
-      } else fra.me.REG[5] = once_value_4;
-      fra.me.REG[5] = fra.me.REG[5];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-      fra.me.REG[1] = CALL_metamodel___static_type___MMParam___name(fra.me.REG[1])(fra.me.REG[1]);
-      fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
-      if (!once_value_5) {
-        fra.me.REG[1] = BOX_NativeString("");
-        REGB1 = TAG_Int(0);
-        fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB1);
-        once_value_5 = fra.me.REG[1];
-        register_static_object(&once_value_5);
-      } else fra.me.REG[1] = once_value_5;
-      fra.me.REG[1] = fra.me.REG[1];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
-      fra.me.REG[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:275 */
-      REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:245 */
-      REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:275 */
-      REGB0 = REGB1;
-    } else {
-      /* ../lib/standard/collection/array.nit:273 */
-      goto label6;
-    }
-  }
-  label6: while(0);
-  /* 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;
-  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 = 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;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[4] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  fra.me.REG[2] = p2;
-  /* 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) {
-    fra.me.REG[4] = BOX_NativeString("");
-    REGB0 = TAG_Int(0);
-    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
-    once_value_1 = fra.me.REG[4];
-    register_static_object(&once_value_1);
-  } 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_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("");
-    REGB0 = TAG_Int(0);
-    fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
-    once_value_2 = fra.me.REG[4];
-    register_static_object(&once_value_2);
-  } else fra.me.REG[4] = once_value_2;
-  fra.me.REG[4] = fra.me.REG[4];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[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("");
-    REGB0 = TAG_Int(0);
-    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    once_value_3 = fra.me.REG[1];
-    register_static_object(&once_value_3);
-  } else fra.me.REG[1] = once_value_3;
-  fra.me.REG[1] = fra.me.REG[1];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[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: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;
-  val_t REGB1;
-  val_t tmp;
-    static val_t once_value_1; /* Once value */
-    static val_t once_value_2; /* Once value */
-      static val_t once_value_3; /* Once value */
-      static val_t once_value_4; /* Once value */
-      static val_t once_value_5; /* Once value */
-  static val_t once_value_6; /* Once value */
-  static val_t once_value_7; /* Once value */
-  static val_t once_value_8; /* Once value */
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_native_interface___ni_metamodel;
-  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;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[4] = NIT_NULL;
-  fra.me.REG[5] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  fra.me.REG[2] = p2;
-  /* native_interface/ni_metamodel.nit:142 */
-  fra.me.REG[3] = NEW_Buffer_standard___string___Buffer___init();
-  /* 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, 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);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
-      REGB0 = REGB1;
-    }
-  }
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-    /* 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) {
-      fra.me.REG[5] = BOX_NativeString("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
-      once_value_1 = fra.me.REG[5];
-      register_static_object(&once_value_1);
-    } else fra.me.REG[5] = once_value_1;
-    fra.me.REG[5] = fra.me.REG[5];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-    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, 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, 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]);
-    if (!once_value_2) {
-      fra.me.REG[5] = BOX_NativeString(" ");
-      REGB0 = TAG_Int(1);
-      fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
-      once_value_2 = fra.me.REG[5];
-      register_static_object(&once_value_2);
-    } else fra.me.REG[5] = once_value_2;
-    fra.me.REG[5] = fra.me.REG[5];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-    fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-    CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  } else {
-    /* 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:148 */
-      REGB0 = TAG_Int(3);
-      fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-      if (!once_value_3) {
-        fra.me.REG[5] = BOX_NativeString("");
-        REGB0 = TAG_Int(0);
-        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
-        once_value_3 = fra.me.REG[5];
-        register_static_object(&once_value_3);
-      } else fra.me.REG[5] = once_value_3;
-      fra.me.REG[5] = fra.me.REG[5];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-      fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[2])(fra.me.REG[2]);
-      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]);
-      if (!once_value_4) {
-        fra.me.REG[5] = BOX_NativeString(" ");
-        REGB0 = TAG_Int(1);
-        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB0);
-        once_value_4 = fra.me.REG[5];
-        register_static_object(&once_value_4);
-      } else fra.me.REG[5] = once_value_4;
-      fra.me.REG[5] = fra.me.REG[5];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-      fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-      CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-    } else {
-      /* native_interface/ni_metamodel.nit:150 */
-      if (!once_value_5) {
-        fra.me.REG[4] = BOX_NativeString("void ");
-        REGB0 = TAG_Int(5);
-        fra.me.REG[4] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[4])(fra.me.REG[4], REGB0);
-        once_value_5 = fra.me.REG[4];
-        register_static_object(&once_value_5);
-      } else fra.me.REG[4] = once_value_5;
-      fra.me.REG[4] = fra.me.REG[4];
-      CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-    }
-  }
-  /* 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(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)) {
-    /* 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: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: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:163 */
-  REGB0 = TAG_Int(3);
-  fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_6) {
-    fra.me.REG[1] = BOX_NativeString("( ");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    once_value_6 = fra.me.REG[1];
-    register_static_object(&once_value_6);
-  } 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]);
-  if (!once_value_7) {
-    fra.me.REG[1] = BOX_NativeString(", ");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    once_value_7 = fra.me.REG[1];
-    register_static_object(&once_value_7);
-  } else fra.me.REG[1] = once_value_7;
-  fra.me.REG[1] = fra.me.REG[1];
-  fra.me.REG[1] = CALL_standard___string___Collection___join(fra.me.REG[2])(fra.me.REG[2], 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_8) {
-    fra.me.REG[1] = BOX_NativeString(" )");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    once_value_8 = fra.me.REG[1];
-    register_static_object(&once_value_8);
-  } else fra.me.REG[1] = once_value_8;
-  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]);
-  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: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 = 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: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 = 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: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;
-  label1: while(0);
-  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;
-  val_t tmp;
-  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 = 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:180 */
-  if (!once_value_1) {
-    fra.me.REG[1] = BOX_NativeString("___super");
-    REGB0 = TAG_Int(8);
-    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    once_value_1 = fra.me.REG[1];
-    register_static_object(&once_value_1);
-  } else fra.me.REG[1] = once_value_1;
-  fra.me.REG[1] = fra.me.REG[1];
-  fra.me.REG[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_suffix(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
-  goto label2;
-  label2: while(0);
-  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 = 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: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]);
-  goto label1;
-  label1: while(0);
-  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;
-  val_t tmp;
-  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 = 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:190 */
-  if (!once_value_1) {
-    fra.me.REG[1] = BOX_NativeString("___impl");
-    REGB0 = TAG_Int(7);
-    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    once_value_1 = fra.me.REG[1];
-    register_static_object(&once_value_1);
-  } else fra.me.REG[1] = once_value_1;
-  fra.me.REG[1] = fra.me.REG[1];
-  fra.me.REG[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_suffix(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
-  goto label2;
-  label2: while(0);
-  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 = 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;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[4] = NIT_NULL;
-  fra.me.REG[5] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* native_interface/ni_metamodel.nit:196 */
-  fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
-  /* 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)) {
-    if (!once_value_1) {
-      fra.me.REG[2] = BOX_NativeString("val_t recv");
-      REGB0 = TAG_Int(10);
-      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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]);
-  }
-  /* 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, 198);
-  }
-  fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[0])(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:270 */
-  REGB0 = TAG_Int(0);
-  /* ../lib/standard/collection/array.nit:271 */
-  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, 271);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:272 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  /* ../lib/standard/collection/array.nit:273 */
-  while(1) {
-    /* ../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, 24);
-    }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
-    }
-    /* ../lib/standard/kernel.nit:242 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ../lib/standard/collection/array.nit:273 */
-    if (UNTAG_Bool(REGB1)) {
-      /* ../lib/standard/collection/array.nit:274 */
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 274);
-      }
-      /* ../lib/standard/collection/array.nit:725 */
-      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* 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) {
-        fra.me.REG[5] = BOX_NativeString("val_t ");
-        REGB1 = TAG_Int(6);
-        fra.me.REG[5] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[5])(fra.me.REG[5], REGB1);
-        once_value_2 = fra.me.REG[5];
-        register_static_object(&once_value_2);
-      } else fra.me.REG[5] = once_value_2;
-      fra.me.REG[5] = fra.me.REG[5];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-      fra.me.REG[3] = CALL_metamodel___static_type___MMParam___name(fra.me.REG[3])(fra.me.REG[3]);
-      fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-      if (!once_value_3) {
-        fra.me.REG[3] = BOX_NativeString("");
-        REGB1 = TAG_Int(0);
-        fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB1);
-        once_value_3 = fra.me.REG[3];
-        register_static_object(&once_value_3);
-      } else fra.me.REG[3] = once_value_3;
-      fra.me.REG[3] = fra.me.REG[3];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[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:275 */
-      REGB1 = TAG_Int(1);
-      /* ../lib/standard/kernel.nit:245 */
-      REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ../lib/standard/collection/array.nit:275 */
-      REGB0 = REGB1;
-    } else {
-      /* ../lib/standard/collection/array.nit:273 */
-      goto label4;
-    }
-  }
-  label4: while(0);
-  /* 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;
-  val_t REGB1;
-  val_t tmp;
-    static val_t once_value_1; /* Once value */
-    static val_t once_value_2; /* Once value */
-    static val_t once_value_3; /* Once value */
-    static val_t once_value_4; /* Once value */
-    static val_t once_value_5; /* Once value */
-    static val_t once_value_6; /* Once value */
-    static val_t once_value_7; /* Once value */
-  static val_t once_value_8; /* Once value */
-  static val_t once_value_9; /* Once value */
-  static val_t once_value_10; /* Once value */
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_native_interface___ni_metamodel;
-  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:204 */
-  fra.me.REG[1] = NEW_Buffer_standard___string___Buffer___init();
-  /* 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, 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);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(0);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-      REGB0 = REGB1;
-    }
-  }
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-    REGB0 = TAG_Bool(1);
-  } else {
-    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:208 */
-    if (!once_value_1) {
-      fra.me.REG[2] = BOX_NativeString("val_t ");
-      REGB0 = TAG_Int(6);
-      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  } else {
-    /* native_interface/ni_metamodel.nit:210 */
-    if (!once_value_2) {
-      fra.me.REG[2] = BOX_NativeString("void ");
-      REGB0 = TAG_Int(5);
-      fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  }
-  /* 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:215 */
-    REGB0 = TAG_Int(5);
-    fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-    if (!once_value_3) {
-      fra.me.REG[3] = BOX_NativeString("NEW_");
-      REGB0 = TAG_Int(4);
-      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
-      once_value_3 = fra.me.REG[3];
-      register_static_object(&once_value_3);
-    } else fra.me.REG[3] = once_value_3;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[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_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]);
-    if (!once_value_4) {
-      fra.me.REG[3] = BOX_NativeString("_");
-      REGB0 = TAG_Int(1);
-      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
-      once_value_4 = fra.me.REG[3];
-      register_static_object(&once_value_4);
-    } else fra.me.REG[3] = once_value_4;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-    fra.me.REG[3] = CALL_compiling___compiling_base___MMLocalProperty___cname(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[3]);
-    if (!once_value_5) {
-      fra.me.REG[3] = BOX_NativeString("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
-      once_value_5 = fra.me.REG[3];
-      register_static_object(&once_value_5);
-    } else fra.me.REG[3] = once_value_5;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[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]);
-  } else {
-    /* 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) {
-      fra.me.REG[3] = BOX_NativeString("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
-      once_value_6 = fra.me.REG[3];
-      register_static_object(&once_value_6);
-    } else fra.me.REG[3] = once_value_6;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[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_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");
-      REGB0 = TAG_Int(6);
-      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
-      once_value_7 = fra.me.REG[3];
-      register_static_object(&once_value_7);
-    } else fra.me.REG[3] = once_value_7;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-    fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-    CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  }
-  /* 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) {
-    fra.me.REG[3] = BOX_NativeString("( ");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
-    once_value_8 = fra.me.REG[3];
-    register_static_object(&once_value_8);
-  } else fra.me.REG[3] = once_value_8;
-  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_native_interface___ni_metamodel___MMMethod___cparams(fra.me.REG[0])(fra.me.REG[0]);
-  if (!once_value_9) {
-    fra.me.REG[3] = BOX_NativeString(", ");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
-    once_value_9 = fra.me.REG[3];
-    register_static_object(&once_value_9);
-  } else fra.me.REG[3] = once_value_9;
-  fra.me.REG[3] = fra.me.REG[3];
-  fra.me.REG[3] = CALL_standard___string___Collection___join(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_10) {
-    fra.me.REG[3] = BOX_NativeString(" )");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
-    once_value_10 = fra.me.REG[3];
-    register_static_object(&once_value_10);
-  } else fra.me.REG[3] = once_value_10;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-  CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* 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 = 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: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, 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 = 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: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;
-  val_t tmp;
-      static val_t once_value_1; /* Once value */
-      static val_t once_value_2; /* Once value */
-        static val_t once_value_4; /* Once value */
-        static val_t once_value_5; /* Once value */
-    static val_t once_value_6; /* Once value */
-    static val_t once_value_7; /* Once value */
-    static val_t once_value_8; /* Once value */
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_native_interface___ni_metamodel;
-  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: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: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:235 */
-      REGB0 = TAG_Int(3);
-      fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-      if (!once_value_1) {
-        fra.me.REG[2] = BOX_NativeString("");
-        REGB0 = TAG_Int(0);
-        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
-      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");
-        REGB0 = TAG_Int(12);
-        fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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: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:238 */
-        REGB0 = TAG_Int(3);
-        fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-        if (!once_value_4) {
-          fra.me.REG[3] = BOX_NativeString("");
-          REGB0 = TAG_Int(0);
-          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
-          once_value_4 = fra.me.REG[3];
-          register_static_object(&once_value_4);
-        } else fra.me.REG[3] = once_value_4;
-        fra.me.REG[3] = fra.me.REG[3];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[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___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");
-          REGB0 = TAG_Int(12);
-          fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
-          once_value_5 = fra.me.REG[3];
-          register_static_object(&once_value_5);
-        } else fra.me.REG[3] = once_value_5;
-        fra.me.REG[3] = fra.me.REG[3];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[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]);
-        fra.me.REG[1] = fra.me.REG[2];
-        goto label3;
-      } else {
-        /* native_interface/ni_metamodel.nit:240 */
-        nit_abort("Aborted", NULL, LOCATE_native_interface___ni_metamodel, 240);
-      }
-    }
-  } else {
-    /* 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) {
-      fra.me.REG[3] = BOX_NativeString("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
-      once_value_6 = fra.me.REG[3];
-      register_static_object(&once_value_6);
-    } else fra.me.REG[3] = once_value_6;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[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___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_");
-      REGB0 = TAG_Int(4);
-      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
-      once_value_7 = fra.me.REG[3];
-      register_static_object(&once_value_7);
-    } else fra.me.REG[3] = once_value_7;
-    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___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("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
-      once_value_8 = fra.me.REG[0];
-      register_static_object(&once_value_8);
-    } else fra.me.REG[0] = once_value_8;
-    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]);
-    fra.me.REG[1] = fra.me.REG[2];
-    goto label3;
-  }
-  label3: while(0);
-  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;
-  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 = 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:249 */
-  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] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(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] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(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___MMImportedCast___as_friendly_extern_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_3) {
-    fra.me.REG[0] = BOX_NativeString("");
-    REGB0 = TAG_Int(0);
-    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(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___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;
-  val_t tmp;
-  static val_t once_value_1; /* Once value */
-  static val_t once_value_2; /* Once value */
-  static val_t once_value_3; /* Once value */
-  static val_t once_value_4; /* Once value */
-  static val_t once_value_5; /* Once value */
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_native_interface___ni_metamodel;
-  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:254 */
-  REGB0 = TAG_Int(9);
-  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] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(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[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]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  if (!once_value_2) {
-    fra.me.REG[3] = BOX_NativeString(" ");
-    REGB0 = TAG_Int(1);
-    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
-    once_value_2 = fra.me.REG[3];
-    register_static_object(&once_value_2);
-  } else fra.me.REG[3] = once_value_2;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  fra.me.REG[1] = CALL_native_interface___ni_metamodel___MMImportedCast___as_local_cname(fra.me.REG[0])(fra.me.REG[0], 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_3) {
-    fra.me.REG[1] = BOX_NativeString("( ");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    once_value_3 = fra.me.REG[1];
-    register_static_object(&once_value_3);
-  } else fra.me.REG[1] = once_value_3;
-  fra.me.REG[1] = fra.me.REG[1];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  fra.me.REG[1] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[1] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(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_4) {
-    fra.me.REG[1] = BOX_NativeString(" ");
-    REGB0 = TAG_Int(1);
-    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    once_value_4 = fra.me.REG[1];
-    register_static_object(&once_value_4);
-  } else fra.me.REG[1] = once_value_4;
-  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___MMImportedCast___in_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_5) {
-    fra.me.REG[0] = BOX_NativeString(" )");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
-    once_value_5 = fra.me.REG[0];
-    register_static_object(&once_value_5);
-  } else fra.me.REG[0] = once_value_5;
-  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 label6;
-  label6: while(0);
-  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;
-  val_t tmp;
-  static val_t once_value_1; /* Once value */
-  static val_t once_value_2; /* Once value */
-  static val_t once_value_3; /* Once value */
-  static val_t once_value_4; /* Once value */
-  static val_t once_value_5; /* Once value */
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_native_interface___ni_metamodel;
-  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:259 */
-  REGB0 = TAG_Int(9);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_1) {
-    fra.me.REG[2] = BOX_NativeString("");
-    REGB0 = TAG_Int(0);
-    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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___MMImportedCast___to(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]);
-  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(1);
-    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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[2] = CALL_native_interface___ni_metamodel___MMImportedCast___as_friendly_extern_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[2]);
-  if (!once_value_3) {
-    fra.me.REG[2] = BOX_NativeString("( ");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
-    once_value_3 = fra.me.REG[2];
-    register_static_object(&once_value_3);
-  } else fra.me.REG[2] = once_value_3;
-  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]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  if (!once_value_4) {
-    fra.me.REG[2] = BOX_NativeString(" ");
-    REGB0 = TAG_Int(1);
-    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
-    once_value_4 = fra.me.REG[2];
-    register_static_object(&once_value_4);
-  } else fra.me.REG[2] = once_value_4;
-  fra.me.REG[2] = fra.me.REG[2];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  fra.me.REG[0] = CALL_native_interface___ni_metamodel___MMImportedCast___in_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_5) {
-    fra.me.REG[0] = BOX_NativeString(" )");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
-    once_value_5 = fra.me.REG[0];
-    register_static_object(&once_value_5);
-  } else fra.me.REG[0] = once_value_5;
-  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 label6;
-  label6: while(0);
-  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;
-  val_t tmp;
-        static val_t once_value_1; /* Once value */
-        static val_t once_value_2; /* Once value */
-    static val_t once_value_4; /* Once value */
-    static val_t once_value_5; /* Once value */
-    static val_t once_value_6; /* Once value */
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_native_interface___ni_metamodel;
-  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: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: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:265 */
-      nit_abort("Aborted", NULL, LOCATE_native_interface___ni_metamodel, 265);
-    } else {
-      /* 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:269 */
-        REGB0 = TAG_Int(3);
-        fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-        if (!once_value_1) {
-          fra.me.REG[2] = BOX_NativeString("");
-          REGB0 = TAG_Int(0);
-          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
-        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");
-          REGB0 = TAG_Int(8);
-          fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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:271 */
-        nit_abort("Aborted", NULL, LOCATE_native_interface___ni_metamodel, 271);
-      }
-    }
-  } else {
-    /* 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) {
-      fra.me.REG[3] = BOX_NativeString("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
-      once_value_4 = fra.me.REG[3];
-      register_static_object(&once_value_4);
-    } else fra.me.REG[3] = once_value_4;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[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___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_");
-      REGB0 = TAG_Int(6);
-      fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(fra.me.REG[3], REGB0);
-      once_value_5 = fra.me.REG[3];
-      register_static_object(&once_value_5);
-    } else fra.me.REG[3] = once_value_5;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[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___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("");
-      REGB0 = TAG_Int(0);
-      fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
-      once_value_6 = fra.me.REG[0];
-      register_static_object(&once_value_6);
-    } else fra.me.REG[0] = once_value_6;
-    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]);
-    fra.me.REG[1] = fra.me.REG[2];
-    goto label3;
-  }
-  label3: while(0);
-  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;
-  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 = 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:280 */
-  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] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(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] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(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___MMImportedCast___is_a_friendly_extern_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_3) {
-    fra.me.REG[0] = BOX_NativeString("");
-    REGB0 = TAG_Int(0);
-    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(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___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;
-  val_t tmp;
-  static val_t once_value_1; /* Once value */
-  static val_t once_value_2; /* Once value */
-  static val_t once_value_3; /* Once value */
-  static val_t once_value_4; /* Once value */
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_native_interface___ni_metamodel;
-  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:287 */
-  REGB0 = TAG_Int(7);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_1) {
-    fra.me.REG[3] = BOX_NativeString("int ");
-    REGB0 = TAG_Int(4);
-    fra.me.REG[3] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[3])(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_native_interface___ni_metamodel___MMImportedCast___is_a_local_cname(fra.me.REG[0])(fra.me.REG[0], 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(2);
-    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(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[1] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[1] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(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_3) {
-    fra.me.REG[1] = BOX_NativeString(" ");
-    REGB0 = TAG_Int(1);
-    fra.me.REG[1] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    once_value_3 = fra.me.REG[1];
-    register_static_object(&once_value_3);
-  } else fra.me.REG[1] = once_value_3;
-  fra.me.REG[1] = fra.me.REG[1];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  fra.me.REG[0] = CALL_native_interface___ni_metamodel___MMImportedCast___in_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_4) {
-    fra.me.REG[0] = BOX_NativeString(" )");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
-    once_value_4 = fra.me.REG[0];
-    register_static_object(&once_value_4);
-  } else fra.me.REG[0] = once_value_4;
-  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 label5;
-  label5: while(0);
-  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;
-  val_t tmp;
-  static val_t once_value_1; /* Once value */
-  static val_t once_value_2; /* Once value */
-  static val_t once_value_3; /* Once value */
-  static val_t once_value_4; /* Once value */
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_native_interface___ni_metamodel;
-  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:292 */
-  REGB0 = TAG_Int(7);
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  if (!once_value_1) {
-    fra.me.REG[2] = BOX_NativeString("int ");
-    REGB0 = TAG_Int(4);
-    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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_native_interface___ni_metamodel___MMImportedCast___is_a_friendly_extern_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[2]);
-  if (!once_value_2) {
-    fra.me.REG[2] = BOX_NativeString("( ");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(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[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]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  if (!once_value_3) {
-    fra.me.REG[2] = BOX_NativeString(" ");
-    REGB0 = TAG_Int(1);
-    fra.me.REG[2] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[2])(fra.me.REG[2], REGB0);
-    once_value_3 = fra.me.REG[2];
-    register_static_object(&once_value_3);
-  } else fra.me.REG[2] = once_value_3;
-  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_native_interface___ni_metamodel___MMImportedCast___in_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_4) {
-    fra.me.REG[0] = BOX_NativeString(" )");
-    REGB0 = TAG_Int(2);
-    fra.me.REG[0] = CALL_standard___string___NativeString___to_s_with_length(fra.me.REG[0])(fra.me.REG[0], REGB0);
-    once_value_4 = fra.me.REG[0];
-    register_static_object(&once_value_4);
-  } else fra.me.REG[0] = once_value_4;
-  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 label5;
-  label5: while(0);
-  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;
-  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 = 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: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:245 */
-  REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* native_interface/ni_metamodel.nit:297 */
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB1;
-}