c_src: update to have intern args
[nit.git] / c_src / metamodel___static_type._sep.c
index 30ac06e..d01f0da 100644 (file)
@@ -1,5 +1,6 @@
 /* This C file is generated by NIT to compile module metamodel___static_type. */
 #include "metamodel___static_type._sep.h"
+static const char LOCATE_metamodel___static_type___MMLocalClass___get_type[] = "static_type::MMLocalClass::get_type";
 val_t metamodel___static_type___MMLocalClass___get_type(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -11,20 +12,21 @@ val_t metamodel___static_type___MMLocalClass___get_type(val_t p0){
   fra.me.meth = LOCATE_metamodel___static_type___MMLocalClass___get_type;
   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;
-  /* ./metamodel//static_type.nit:27 */
+  /* metamodel/static_type.nit:27 */
   fra.me.REG[1] = fra.me.REG[0];
-  /* ./metamodel//static_type.nit:30 */
+  /* metamodel/static_type.nit:30 */
   fra.me.REG[2] = ATTR_metamodel___static_type___MMLocalClass____base_type_cache(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
@@ -35,7 +37,7 @@ val_t metamodel___static_type___MMLocalClass___get_type(val_t p0){
     fra.me.REG[2] = NEW_MMTypeSimpleClass_metamodel___static_type___MMTypeSimpleClass___init(fra.me.REG[1]);
     ATTR_metamodel___static_type___MMLocalClass____base_type_cache(fra.me.REG[1]) = fra.me.REG[2];
   }
-  /* ./metamodel//static_type.nit:31 */
+  /* metamodel/static_type.nit:31 */
   fra.me.REG[1] = ATTR_metamodel___static_type___MMLocalClass____base_type_cache(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -47,6 +49,7 @@ val_t metamodel___static_type___MMLocalClass___get_type(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_metamodel___static_type___MMLocalClass___add_ancestor[] = "static_type::MMLocalClass::add_ancestor";
 void metamodel___static_type___MMLocalClass___add_ancestor(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -58,13 +61,14 @@ void metamodel___static_type___MMLocalClass___add_ancestor(val_t p0, val_t p1){
   fra.me.meth = LOCATE_metamodel___static_type___MMLocalClass___add_ancestor;
   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;
-  /* ./metamodel//static_type.nit:37 */
+  /* metamodel/static_type.nit:37 */
   fra.me.REG[2] = ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]);
   fra.me.REG[3] = CALL_metamodel___static_type___MMAncestor___local_class(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
@@ -77,7 +81,7 @@ void metamodel___static_type___MMLocalClass___add_ancestor(val_t p0, val_t p1){
   } else {
     nit_abort("Assert failed", NULL, LOCATE_metamodel___static_type, 37);
   }
-  /* ./metamodel//static_type.nit:38 */
+  /* metamodel/static_type.nit:38 */
   fra.me.REG[3] = CALL_metamodel___static_type___MMAncestor___local_class(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[0]));
   if (UNTAG_Bool(REGB0)) {
@@ -90,7 +94,7 @@ void metamodel___static_type___MMLocalClass___add_ancestor(val_t p0, val_t p1){
   } else {
     nit_abort("Assert failed", NULL, LOCATE_metamodel___static_type, 38);
   }
-  /* ./metamodel//static_type.nit:39 */
+  /* metamodel/static_type.nit:39 */
   fra.me.REG[0] = ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]);
   fra.me.REG[3] = CALL_metamodel___static_type___MMAncestor___local_class(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
@@ -101,6 +105,7 @@ void metamodel___static_type___MMLocalClass___add_ancestor(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_metamodel___static_type___MMLocalClass___ancestors[] = "static_type::MMLocalClass::ancestors";
 val_t metamodel___static_type___MMLocalClass___ancestors(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -110,13 +115,15 @@ val_t metamodel___static_type___MMLocalClass___ancestors(val_t p0){
   fra.me.meth = LOCATE_metamodel___static_type___MMLocalClass___ancestors;
   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;
-  /* ./metamodel//static_type.nit:42 */
+  /* metamodel/static_type.nit:42 */
   fra.me.REG[0] = ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMLocalClass___ancestor[] = "static_type::MMLocalClass::ancestor";
 val_t metamodel___static_type___MMLocalClass___ancestor(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -127,11 +134,12 @@ val_t metamodel___static_type___MMLocalClass___ancestor(val_t p0, val_t p1){
   fra.me.meth = LOCATE_metamodel___static_type___MMLocalClass___ancestor;
   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;
-  /* ./metamodel//static_type.nit:48 */
+  /* metamodel/static_type.nit:48 */
   fra.me.REG[0] = ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -148,6 +156,7 @@ val_t metamodel___static_type___MMLocalClass___ancestor(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_metamodel___static_type___MMLocalProperty___signature[] = "static_type::MMLocalProperty::signature";
 val_t metamodel___static_type___MMLocalProperty___signature(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -157,13 +166,15 @@ val_t metamodel___static_type___MMLocalProperty___signature(val_t p0){
   fra.me.meth = LOCATE_metamodel___static_type___MMLocalProperty___signature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//static_type.nit:53 */
+  /* metamodel/static_type.nit:53 */
   fra.me.REG[0] = ATTR_metamodel___static_type___MMLocalProperty____signature(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMLocalProperty___signature__eq[] = "static_type::MMLocalProperty::signature=";
 void metamodel___static_type___MMLocalProperty___signature__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -173,15 +184,17 @@ void metamodel___static_type___MMLocalProperty___signature__eq(val_t p0, val_t p
   fra.me.meth = LOCATE_metamodel___static_type___MMLocalProperty___signature__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//static_type.nit:53 */
+  /* metamodel/static_type.nit:53 */
   ATTR_metamodel___static_type___MMLocalProperty____signature(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_metamodel___static_type___MMLocalProperty___signature_for[] = "static_type::MMLocalProperty::signature_for";
 val_t metamodel___static_type___MMLocalProperty___signature_for(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -193,15 +206,16 @@ val_t metamodel___static_type___MMLocalProperty___signature_for(val_t p0, val_t
   fra.me.meth = LOCATE_metamodel___static_type___MMLocalProperty___signature_for;
   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;
-  /* ./metamodel//static_type.nit:58 */
+  /* metamodel/static_type.nit:58 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* ./metamodel//static_type.nit:60 */
+  /* metamodel/static_type.nit:60 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[3] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[3]));
@@ -219,7 +233,7 @@ val_t metamodel___static_type___MMLocalProperty___signature_for(val_t p0, val_t
     }
     goto label1;
   }
-  /* ./metamodel//static_type.nit:62 */
+  /* metamodel/static_type.nit:62 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -238,14 +252,14 @@ val_t metamodel___static_type___MMLocalProperty___signature_for(val_t p0, val_t
     fra.me.REG[3] = fra.me.REG[0];
     goto label1;
   }
-  /* ./metamodel//static_type.nit:64 */
+  /* metamodel/static_type.nit:64 */
   fra.me.REG[0] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_metamodel___static_type, 64);
   }
   fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___adaptation_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./metamodel//static_type.nit:65 */
+  /* metamodel/static_type.nit:65 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -253,13 +267,14 @@ val_t metamodel___static_type___MMLocalProperty___signature_for(val_t p0, val_t
   }
   fra.me.REG[2] = ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[0]);
-  /* ./metamodel//static_type.nit:66 */
+  /* metamodel/static_type.nit:66 */
   fra.me.REG[3] = fra.me.REG[0];
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
+static const char LOCATE_metamodel___static_type___MMParam___mmtype[] = "static_type::MMParam::mmtype";
 val_t metamodel___static_type___MMParam___mmtype(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -270,18 +285,40 @@ val_t metamodel___static_type___MMParam___mmtype(val_t p0){
   fra.me.meth = LOCATE_metamodel___static_type___MMParam___mmtype;
   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;
-  /* ./metamodel//static_type.nit:71 */
-  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMParam____mmtype(fra.me.REG[0])!=NIT_NULL);
+  /* metamodel/static_type.nit:71 */
+  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMParam_____atmmtype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_mmtype", LOCATE_metamodel___static_type, 71);
+    nit_abort("Uninitialized attribute %s", "@mmtype", LOCATE_metamodel___static_type, 71);
   }
-  fra.me.REG[0] = ATTR_metamodel___static_type___MMParam____mmtype(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_metamodel___static_type___MMParam_____atmmtype(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMParam___mmtype__eq[] = "static_type::MMParam::mmtype=";
+void metamodel___static_type___MMParam___mmtype__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_metamodel___static_type;
+  fra.me.line = 71;
+  fra.me.meth = LOCATE_metamodel___static_type___MMParam___mmtype__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;
+  /* metamodel/static_type.nit:71 */
+  ATTR_metamodel___static_type___MMParam_____atmmtype(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_metamodel___static_type___MMParam___name[] = "static_type::MMParam::name";
 val_t metamodel___static_type___MMParam___name(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -292,18 +329,40 @@ val_t metamodel___static_type___MMParam___name(val_t p0){
   fra.me.meth = LOCATE_metamodel___static_type___MMParam___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;
-  /* ./metamodel//static_type.nit:72 */
-  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMParam____name(fra.me.REG[0])!=NIT_NULL);
+  /* metamodel/static_type.nit:72 */
+  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMParam_____atname(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_name", LOCATE_metamodel___static_type, 72);
+    nit_abort("Uninitialized attribute %s", "@name", LOCATE_metamodel___static_type, 72);
   }
-  fra.me.REG[0] = ATTR_metamodel___static_type___MMParam____name(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_metamodel___static_type___MMParam_____atname(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMParam___name__eq[] = "static_type::MMParam::name=";
+void metamodel___static_type___MMParam___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_metamodel___static_type;
+  fra.me.line = 72;
+  fra.me.meth = LOCATE_metamodel___static_type___MMParam___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;
+  /* metamodel/static_type.nit:72 */
+  ATTR_metamodel___static_type___MMParam_____atname(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_metamodel___static_type___MMParam___init[] = "static_type::MMParam::init";
 void metamodel___static_type___MMParam___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMParam].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
@@ -315,20 +374,22 @@ void metamodel___static_type___MMParam___init(val_t p0, val_t p1, val_t p2, int*
   fra.me.meth = LOCATE_metamodel___static_type___MMParam___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./metamodel//static_type.nit:76 */
-  ATTR_metamodel___static_type___MMParam____mmtype(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//static_type.nit:77 */
-  ATTR_metamodel___static_type___MMParam____name(fra.me.REG[0]) = fra.me.REG[2];
+  /* metamodel/static_type.nit:76 */
+  CALL_metamodel___static_type___MMParam___mmtype__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* metamodel/static_type.nit:77 */
+  CALL_metamodel___static_type___MMParam___name__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
   return;
 }
+static const char LOCATE_metamodel___static_type___MMParam___to_s[] = "static_type::MMParam::(string::Object::to_s)";
 val_t metamodel___static_type___MMParam___to_s(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -342,11 +403,12 @@ val_t metamodel___static_type___MMParam___to_s(val_t p0){
   fra.me.meth = LOCATE_metamodel___static_type___MMParam___to_s;
   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;
-  /* ./metamodel//static_type.nit:80 */
+  /* metamodel/static_type.nit:80 */
   REGB0 = TAG_Int(5);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -388,6 +450,7 @@ val_t metamodel___static_type___MMParam___to_s(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_metamodel___static_type___MMSignature___recv[] = "static_type::MMSignature::recv";
 val_t metamodel___static_type___MMSignature___recv(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -398,9 +461,10 @@ val_t metamodel___static_type___MMSignature___recv(val_t p0){
   fra.me.meth = LOCATE_metamodel___static_type___MMSignature___recv;
   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;
-  /* ./metamodel//static_type.nit:85 */
+  /* metamodel/static_type.nit:85 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____recv(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -410,6 +474,7 @@ val_t metamodel___static_type___MMSignature___recv(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMSignature___params[] = "static_type::MMSignature::params";
 val_t metamodel___static_type___MMSignature___params(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -420,9 +485,10 @@ val_t metamodel___static_type___MMSignature___params(val_t p0){
   fra.me.meth = LOCATE_metamodel___static_type___MMSignature___params;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//static_type.nit:88 */
+  /* metamodel/static_type.nit:88 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -432,6 +498,7 @@ val_t metamodel___static_type___MMSignature___params(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMSignature___return_type[] = "static_type::MMSignature::return_type";
 val_t metamodel___static_type___MMSignature___return_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -441,13 +508,15 @@ val_t metamodel___static_type___MMSignature___return_type(val_t p0){
   fra.me.meth = LOCATE_metamodel___static_type___MMSignature___return_type;
   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;
-  /* ./metamodel//static_type.nit:91 */
+  /* metamodel/static_type.nit:91 */
   fra.me.REG[0] = ATTR_metamodel___static_type___MMSignature____return_type(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMSignature___closures[] = "static_type::MMSignature::closures";
 val_t metamodel___static_type___MMSignature___closures(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -458,9 +527,10 @@ val_t metamodel___static_type___MMSignature___closures(val_t p0){
   fra.me.meth = LOCATE_metamodel___static_type___MMSignature___closures;
   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;
-  /* ./metamodel//static_type.nit:94 */
+  /* metamodel/static_type.nit:94 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____closures(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -470,6 +540,7 @@ val_t metamodel___static_type___MMSignature___closures(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMSignature___closure_named[] = "static_type::MMSignature::closure_named";
 val_t metamodel___static_type___MMSignature___closure_named(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
@@ -482,6 +553,7 @@ val_t metamodel___static_type___MMSignature___closure_named(val_t p0, val_t p1){
   fra.me.meth = LOCATE_metamodel___static_type___MMSignature___closure_named;
   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;
@@ -489,31 +561,31 @@ val_t metamodel___static_type___MMSignature___closure_named(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//static_type.nit:100 */
+  /* metamodel/static_type.nit:100 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____closures(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_closures", LOCATE_metamodel___static_type, 100);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMSignature____closures(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:232 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:233 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -521,18 +593,18 @@ val_t metamodel___static_type___MMSignature___closure_named(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:235 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:724 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ./metamodel//static_type.nit:101 */
+      /* metamodel/static_type.nit:101 */
       fra.me.REG[4] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[3])(fra.me.REG[3]);
       REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[1]));
       if (UNTAG_Bool(REGB1)) {
@@ -543,25 +615,26 @@ val_t metamodel___static_type___MMSignature___closure_named(val_t p0, val_t p1){
       if (UNTAG_Bool(REGB1)) {
         goto label1;
       }
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:238 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./metamodel//static_type.nit:103 */
+  /* metamodel/static_type.nit:103 */
   fra.me.REG[3] = NIT_NULL;
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
+static const char LOCATE_metamodel___static_type___MMSignature___arity[] = "static_type::MMSignature::arity";
 val_t metamodel___static_type___MMSignature___arity(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -572,28 +645,30 @@ val_t metamodel___static_type___MMSignature___arity(val_t p0){
   fra.me.meth = LOCATE_metamodel___static_type___MMSignature___arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//static_type.nit:109 */
+  /* metamodel/static_type.nit:109 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 109);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ../lib/standard/collection/array.nit:24 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./metamodel//static_type.nit:109 */
+  /* metamodel/static_type.nit:109 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMSignature_____l[] = "static_type::MMSignature::<";
 val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
@@ -610,6 +685,7 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
   fra.me.meth = LOCATE_metamodel___static_type___MMSignature_____l;
   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;
@@ -617,9 +693,9 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//static_type.nit:112 */
+  /* metamodel/static_type.nit:112 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* ./metamodel//static_type.nit:115 */
+  /* metamodel/static_type.nit:115 */
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[1]));
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -627,11 +703,11 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./metamodel//static_type.nit:116 */
-    REGB0 = TAG_Bool(true);
+    /* metamodel/static_type.nit:116 */
+    REGB0 = TAG_Bool(1);
     goto label1;
   }
-  /* ./metamodel//static_type.nit:118 */
+  /* metamodel/static_type.nit:118 */
   REGB1 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____recv(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
@@ -651,31 +727,31 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
   } else {
     nit_abort("Assert failed", NULL, LOCATE_metamodel___static_type, 118);
   }
-  /* ./metamodel//static_type.nit:119 */
+  /* metamodel/static_type.nit:119 */
   fra.me.REG[4] = ATTR_metamodel___static_type___MMSignature____return_type(fra.me.REG[2]);
-  /* ./metamodel//static_type.nit:120 */
+  /* metamodel/static_type.nit:120 */
   fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./metamodel//static_type.nit:121 */
+  /* metamodel/static_type.nit:121 */
   REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
   REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[1])(fra.me.REG[1]);
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ../lib/standard/kernel.nit:230 */
     REGB2 = TAG_Bool((REGB1)==(REGB2));
-    /* ./metamodel//static_type.nit:121 */
+    /* metamodel/static_type.nit:121 */
     REGB3 = REGB2;
   }
   REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
   if (UNTAG_Bool(REGB3)) {
-    REGB3 = TAG_Bool(true);
+    REGB3 = TAG_Bool(1);
   } else {
     REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(false);
+        REGB1 = TAG_Bool(0);
         REGB2 = REGB1;
       } else {
         REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
@@ -687,7 +763,7 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
     } else {
       REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        REGB4 = TAG_Bool(false);
+        REGB4 = TAG_Bool(0);
         REGB1 = REGB4;
       } else {
         REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
@@ -697,26 +773,26 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
     REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
     if (UNTAG_Bool(REGB4)) {
     } else {
-      /* ./../lib/standard//kernel.nit:178 */
+      /* ../lib/standard/kernel.nit:198 */
       REGB1 = TAG_Bool((REGB2)==(REGB1));
-      /* ./metamodel//static_type.nit:121 */
+      /* metamodel/static_type.nit:121 */
       REGB4 = REGB1;
     }
     REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
     REGB3 = REGB4;
   }
   if (UNTAG_Bool(REGB3)) {
-    REGB3 = TAG_Bool(false);
+    REGB3 = TAG_Bool(0);
     REGB0 = REGB3;
     goto label1;
   }
-  /* ./metamodel//static_type.nit:122 */
+  /* metamodel/static_type.nit:122 */
   REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB3)) {
   } else {
     REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB4)) {
-      REGB4 = TAG_Bool(false);
+      REGB4 = TAG_Bool(0);
       REGB3 = REGB4;
     } else {
       REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
@@ -737,129 +813,129 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
     REGB3 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
     REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
   } else {
-    REGB4 = TAG_Bool(false);
+    REGB4 = TAG_Bool(0);
     REGB3 = REGB4;
   }
   if (UNTAG_Bool(REGB3)) {
-    /* ./metamodel//static_type.nit:123 */
-    REGB3 = TAG_Bool(false);
+    /* metamodel/static_type.nit:123 */
+    REGB3 = TAG_Bool(0);
     REGB0 = REGB3;
     goto label1;
   }
-  /* ./metamodel//static_type.nit:126 */
+  /* metamodel/static_type.nit:126 */
   REGB3 = TAG_Int(0);
   REGB4 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./../lib/standard//kernel.nit:335 */
+  /* ../lib/standard/kernel.nit:355 */
   while(1) {
     REGB1 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB1)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:235 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ../lib/standard/kernel.nit:355 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./metamodel//static_type.nit:126 */
+      /* metamodel/static_type.nit:126 */
       REGB1 = REGB3;
-      /* ./metamodel//static_type.nit:127 */
+      /* metamodel/static_type.nit:127 */
       fra.me.REG[3] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
       fra.me.REG[4] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB1);
       REGB1 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
       REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
       if (UNTAG_Bool(REGB1)) {
-        /* ./metamodel//static_type.nit:128 */
-        REGB1 = TAG_Bool(false);
+        /* metamodel/static_type.nit:128 */
+        REGB1 = TAG_Bool(0);
         REGB0 = REGB1;
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ../lib/standard/kernel.nit:357 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:238 */
       REGB1 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ../lib/standard/kernel.nit:357 */
       REGB3 = REGB1;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ../lib/standard/kernel.nit:355 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./metamodel//static_type.nit:132 */
+  /* metamodel/static_type.nit:132 */
   fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ../lib/standard/collection/array.nit:24 */
   REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./metamodel//static_type.nit:132 */
+  /* metamodel/static_type.nit:132 */
   fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ../lib/standard/collection/array.nit:24 */
   REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB4)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./metamodel//static_type.nit:132 */
+  /* metamodel/static_type.nit:132 */
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ../lib/standard/kernel.nit:230 */
     REGB4 = TAG_Bool((REGB3)==(REGB4));
-    /* ./metamodel//static_type.nit:132 */
+    /* metamodel/static_type.nit:132 */
     REGB1 = REGB4;
   }
   REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
   if (UNTAG_Bool(REGB1)) {
-    REGB1 = TAG_Bool(false);
+    REGB1 = TAG_Bool(0);
     REGB0 = REGB1;
     goto label1;
   }
-  /* ./metamodel//static_type.nit:133 */
+  /* metamodel/static_type.nit:133 */
   REGB1 = TAG_Int(0);
   fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ../lib/standard/collection/array.nit:24 */
   REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB4)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//kernel.nit:335 */
+  /* ../lib/standard/kernel.nit:355 */
   while(1) {
     REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:235 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB4));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ../lib/standard/kernel.nit:355 */
     if (UNTAG_Bool(REGB3)) {
-      /* ./metamodel//static_type.nit:133 */
+      /* metamodel/static_type.nit:133 */
       REGB3 = REGB1;
-      /* ./metamodel//static_type.nit:134 */
+      /* metamodel/static_type.nit:134 */
       fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[1])(fra.me.REG[1]);
-      /* ./../lib/standard//collection//array.nit:241 */
+      /* ../lib/standard/collection/array.nit:278 */
       REGB2 = REGB3;
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ../lib/standard/collection/array.nit:280 */
       REGB5 = TAG_Int(0);
       REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB6)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ./../lib/standard//kernel.nit:216 */
+      /* ../lib/standard/kernel.nit:236 */
       REGB5 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB5));
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ../lib/standard/collection/array.nit:280 */
       if (UNTAG_Bool(REGB5)) {
         REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
         if (UNTAG_Bool(REGB5)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 243);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
         REGB6 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -867,45 +943,45 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ./../lib/standard//kernel.nit:215 */
+        /* ../lib/standard/kernel.nit:235 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB5));
       } else {
-        /* ./../lib/standard//collection//array.nit:243 */
-        REGB6 = TAG_Bool(false);
+        /* ../lib/standard/collection/array.nit:280 */
+        REGB6 = TAG_Bool(0);
         REGB5 = REGB6;
       }
       if (UNTAG_Bool(REGB5)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 243);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:244 */
+      /* ../lib/standard/collection/array.nit:281 */
       fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
       REGB5 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB5)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 244);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:724 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB2)];
-      /* ./../lib/standard//collection//array.nit:244 */
+      /* ../lib/standard/collection/array.nit:281 */
       goto label3;
       label3: while(0);
-      /* ./metamodel//static_type.nit:134 */
+      /* metamodel/static_type.nit:134 */
       fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ../lib/standard/collection/array.nit:280 */
       REGB2 = TAG_Int(0);
       REGB5 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB5)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ./../lib/standard//kernel.nit:216 */
+      /* ../lib/standard/kernel.nit:236 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ../lib/standard/collection/array.nit:280 */
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 243);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
         REGB5 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
@@ -913,29 +989,29 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ./../lib/standard//kernel.nit:215 */
+        /* ../lib/standard/kernel.nit:235 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
       } else {
-        /* ./../lib/standard//collection//array.nit:243 */
-        REGB5 = TAG_Bool(false);
+        /* ../lib/standard/collection/array.nit:280 */
+        REGB5 = TAG_Bool(0);
         REGB2 = REGB5;
       }
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 243);
+        nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:244 */
+      /* ../lib/standard/collection/array.nit:281 */
       fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
       REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 244);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:724 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB3)];
-      /* ./../lib/standard//collection//array.nit:244 */
+      /* ../lib/standard/collection/array.nit:281 */
       goto label4;
       label4: while(0);
-      /* ./metamodel//static_type.nit:134 */
+      /* metamodel/static_type.nit:134 */
       REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
         nit_abort("Reciever is null", NULL, LOCATE_metamodel___static_type, 134);
@@ -943,30 +1019,31 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
       REGB3 = CALL_metamodel___static_type___MMClosure_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
       REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
       if (UNTAG_Bool(REGB3)) {
-        REGB3 = TAG_Bool(false);
+        REGB3 = TAG_Bool(0);
         REGB0 = REGB3;
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ../lib/standard/kernel.nit:357 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:238 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ../lib/standard/kernel.nit:357 */
       REGB1 = REGB3;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ../lib/standard/kernel.nit:355 */
       goto label5;
     }
   }
   label5: while(0);
-  /* ./metamodel//static_type.nit:136 */
-  REGB1 = TAG_Bool(true);
+  /* metamodel/static_type.nit:136 */
+  REGB1 = TAG_Bool(1);
   REGB0 = REGB1;
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMSignature_____bra[] = "static_type::MMSignature::[]";
 val_t metamodel___static_type___MMSignature_____bra(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -979,22 +1056,23 @@ val_t metamodel___static_type___MMSignature_____bra(val_t p0, val_t p1){
   fra.me.meth = LOCATE_metamodel___static_type___MMSignature_____bra;
   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;
   REGB0 = p1;
-  /* ./metamodel//static_type.nit:142 */
+  /* metamodel/static_type.nit:142 */
   REGB1 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 142);
   }
   fra.me.REG[1] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ../lib/standard/collection/array.nit:24 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
   REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -1002,35 +1080,35 @@ val_t metamodel___static_type___MMSignature_____bra(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  /* ./../lib/standard//kernel.nit:217 */
+  /* ../lib/standard/kernel.nit:237 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
-  /* ./metamodel//static_type.nit:142 */
+  /* metamodel/static_type.nit:142 */
   if (UNTAG_Bool(REGB1)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_metamodel___static_type, 142);
   }
-  /* ./metamodel//static_type.nit:143 */
+  /* metamodel/static_type.nit:143 */
   REGB1 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 143);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:243 */
+  /* ../lib/standard/collection/array.nit:280 */
   REGB1 = TAG_Int(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:216 */
+  /* ../lib/standard/kernel.nit:236 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:243 */
+  /* ../lib/standard/collection/array.nit:280 */
   if (UNTAG_Bool(REGB1)) {
     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, 243);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
     }
     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*/;
@@ -1038,29 +1116,29 @@ val_t metamodel___static_type___MMSignature_____bra(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:235 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ./../lib/standard//collection//array.nit:243 */
-    REGB2 = TAG_Bool(false);
+    /* ../lib/standard/collection/array.nit:280 */
+    REGB2 = TAG_Bool(0);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 243);
+    nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
   }
-  /* ./../lib/standard//collection//array.nit:244 */
+  /* ../lib/standard/collection/array.nit:281 */
   fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
   REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 244);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
   }
-  /* ./../lib/standard//collection//array.nit:652 */
+  /* ../lib/standard/collection/array.nit:724 */
   fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-  /* ./../lib/standard//collection//array.nit:244 */
+  /* ../lib/standard/collection/array.nit:281 */
   goto label1;
   label1: while(0);
-  /* ./metamodel//static_type.nit:143 */
+  /* metamodel/static_type.nit:143 */
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_metamodel___static_type, 143);
@@ -1071,6 +1149,7 @@ val_t metamodel___static_type___MMSignature_____bra(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMSignature___to_s[] = "static_type::MMSignature::(string::Object::to_s)";
 val_t metamodel___static_type___MMSignature___to_s(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
@@ -1090,56 +1169,57 @@ val_t metamodel___static_type___MMSignature___to_s(val_t p0){
   fra.me.meth = LOCATE_metamodel___static_type___MMSignature___to_s;
   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;
-  /* ./metamodel//static_type.nit:148 */
+  /* metamodel/static_type.nit:148 */
   fra.me.REG[1] = NEW_Buffer_standard___string___Buffer___init();
-  /* ./metamodel//static_type.nit:149 */
+  /* metamodel/static_type.nit:149 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 149);
   }
   fra.me.REG[2] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ../lib/standard/collection/array.nit:24 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./metamodel//static_type.nit:149 */
+  /* metamodel/static_type.nit:149 */
   REGB1 = TAG_Int(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:217 */
+  /* ../lib/standard/kernel.nit:237 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ./metamodel//static_type.nit:149 */
+  /* metamodel/static_type.nit:149 */
   if (UNTAG_Bool(REGB1)) {
-    /* ./metamodel//static_type.nit:151 */
+    /* metamodel/static_type.nit:151 */
     REGB1 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 151);
     }
     fra.me.REG[2] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ./metamodel//static_type.nit:151 */
+    /* metamodel/static_type.nit:151 */
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-    /* ./metamodel//static_type.nit:152 */
+    /* metamodel/static_type.nit:152 */
     REGB1 = TAG_Int(0);
     REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -1147,48 +1227,48 @@ val_t metamodel___static_type___MMSignature___to_s(val_t p0){
       nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 152);
     }
     fra.me.REG[3] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ../lib/standard/kernel.nit:355 */
     while(1) {
       REGB2 = TAG_Bool(VAL_ISA(REGB0, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
       if (UNTAG_Bool(REGB2)) {
       } else {
         nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ./../lib/standard//kernel.nit:215 */
+      /* ../lib/standard/kernel.nit:235 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ../lib/standard/kernel.nit:355 */
       if (UNTAG_Bool(REGB2)) {
-        /* ./metamodel//static_type.nit:152 */
+        /* metamodel/static_type.nit:152 */
         REGB2 = REGB1;
-        /* ./metamodel//static_type.nit:153 */
+        /* metamodel/static_type.nit:153 */
         REGB3 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
         } else {
           nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 153);
         }
         fra.me.REG[3] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:243 */
+        /* ../lib/standard/collection/array.nit:280 */
         REGB3 = TAG_Int(0);
         REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
         if (UNTAG_Bool(REGB4)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        /* ./../lib/standard//kernel.nit:216 */
+        /* ../lib/standard/kernel.nit:236 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-        /* ./../lib/standard//collection//array.nit:243 */
+        /* ../lib/standard/collection/array.nit:280 */
         if (UNTAG_Bool(REGB3)) {
           REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 243);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
           REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
           REGB4 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
@@ -1196,44 +1276,44 @@ val_t metamodel___static_type___MMSignature___to_s(val_t p0){
           } else {
             nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          /* ./../lib/standard//kernel.nit:215 */
+          /* ../lib/standard/kernel.nit:235 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
         } else {
-          /* ./../lib/standard//collection//array.nit:243 */
-          REGB4 = TAG_Bool(false);
+          /* ../lib/standard/collection/array.nit:280 */
+          REGB4 = TAG_Bool(0);
           REGB3 = REGB4;
         }
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 243);
+          nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:244 */
+        /* ../lib/standard/collection/array.nit:281 */
         fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
         REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 244);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:652 */
+        /* ../lib/standard/collection/array.nit:724 */
         fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
-        /* ./../lib/standard//collection//array.nit:244 */
+        /* ../lib/standard/collection/array.nit:281 */
         goto label1;
         label1: while(0);
-        /* ./metamodel//static_type.nit:154 */
+        /* metamodel/static_type.nit:154 */
         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]);
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ../lib/standard/kernel.nit:357 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ../lib/standard/kernel.nit:238 */
         REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ../lib/standard/kernel.nit:357 */
         REGB1 = REGB2;
       } else {
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ../lib/standard/kernel.nit:355 */
         goto label2;
       }
     }
     label2: while(0);
-    /* ./metamodel//static_type.nit:156 */
+    /* metamodel/static_type.nit:156 */
     REGB1 = TAG_Int(3);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
     if (!once_value_3) {
@@ -1267,15 +1347,15 @@ val_t metamodel___static_type___MMSignature___to_s(val_t p0){
     fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* ./metamodel//static_type.nit:158 */
+  /* metamodel/static_type.nit:158 */
   fra.me.REG[0] = ATTR_metamodel___static_type___MMSignature____return_type(fra.me.REG[0]);
-  /* ./metamodel//static_type.nit:159 */
+  /* metamodel/static_type.nit:159 */
   REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      REGB0 = TAG_Bool(false);
+      REGB0 = TAG_Bool(0);
       REGB1 = REGB0;
     } else {
       REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
@@ -1309,13 +1389,14 @@ val_t metamodel___static_type___MMSignature___to_s(val_t p0){
     fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* ./metamodel//static_type.nit:160 */
+  /* metamodel/static_type.nit:160 */
   fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
   goto label8;
   label8: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_metamodel___static_type___MMSignature___adaptation_to[] = "static_type::MMSignature::adaptation_to";
 val_t metamodel___static_type___MMSignature___adaptation_to(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
   val_t REGB0;
@@ -1328,6 +1409,7 @@ val_t metamodel___static_type___MMSignature___adaptation_to(val_t p0, val_t p1){
   fra.me.meth = LOCATE_metamodel___static_type___MMSignature___adaptation_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
+  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;
@@ -1340,7 +1422,7 @@ val_t metamodel___static_type___MMSignature___adaptation_to(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//static_type.nit:166 */
+  /* metamodel/static_type.nit:166 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____recv(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1354,39 +1436,39 @@ val_t metamodel___static_type___MMSignature___adaptation_to(val_t p0, val_t p1){
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./metamodel//static_type.nit:167 */
+    /* metamodel/static_type.nit:167 */
     fra.me.REG[2] = fra.me.REG[0];
     goto label1;
   }
-  /* ./metamodel//static_type.nit:169 */
+  /* metamodel/static_type.nit:169 */
   fra.me.REG[3] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./metamodel//static_type.nit:170 */
+  /* metamodel/static_type.nit:170 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* ./metamodel//static_type.nit:171 */
+  /* metamodel/static_type.nit:171 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 171);
   }
   fra.me.REG[5] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:232 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:233 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -1394,22 +1476,22 @@ val_t metamodel___static_type___MMSignature___adaptation_to(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:235 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:724 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
-      /* ./metamodel//static_type.nit:172 */
+      /* metamodel/static_type.nit:172 */
       fra.me.REG[8] = CALL_metamodel___static_type___MMParam___mmtype(fra.me.REG[7])(fra.me.REG[7]);
       fra.me.REG[8] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
       fra.me.REG[8] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[1]);
-      /* ./metamodel//static_type.nit:174 */
+      /* metamodel/static_type.nit:174 */
       fra.me.REG[9] = CALL_metamodel___static_type___MMParam___mmtype(fra.me.REG[7])(fra.me.REG[7]);
       REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[8],fra.me.REG[9]));
       if (UNTAG_Bool(REGB1)) {
@@ -1418,37 +1500,37 @@ val_t metamodel___static_type___MMSignature___adaptation_to(val_t p0, val_t p1){
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./metamodel//static_type.nit:175 */
+        /* metamodel/static_type.nit:175 */
         fra.me.REG[9] = fra.me.REG[7];
       } else {
-        /* ./metamodel//static_type.nit:177 */
+        /* metamodel/static_type.nit:177 */
         fra.me.REG[7] = CALL_metamodel___static_type___MMParam___name(fra.me.REG[7])(fra.me.REG[7]);
         fra.me.REG[7] = NEW_MMParam_metamodel___static_type___MMParam___init(fra.me.REG[8], fra.me.REG[7]);
         fra.me.REG[9] = fra.me.REG[7];
       }
-      /* ./metamodel//static_type.nit:180 */
+      /* metamodel/static_type.nit:180 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[9]);
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:238 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./metamodel//static_type.nit:182 */
+  /* metamodel/static_type.nit:182 */
   fra.me.REG[6] = ATTR_metamodel___static_type___MMSignature____return_type(fra.me.REG[0]);
-  /* ./metamodel//static_type.nit:183 */
+  /* metamodel/static_type.nit:183 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
@@ -1457,7 +1539,7 @@ val_t metamodel___static_type___MMSignature___adaptation_to(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./metamodel//static_type.nit:184 */
+    /* metamodel/static_type.nit:184 */
     REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_metamodel___static_type, 184);
@@ -1466,33 +1548,33 @@ val_t metamodel___static_type___MMSignature___adaptation_to(val_t p0, val_t p1){
     fra.me.REG[3] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
     fra.me.REG[6] = fra.me.REG[3];
   }
-  /* ./metamodel//static_type.nit:186 */
+  /* metamodel/static_type.nit:186 */
   fra.me.REG[6] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[4], fra.me.REG[6], fra.me.REG[1]);
-  /* ./metamodel//static_type.nit:187 */
+  /* metamodel/static_type.nit:187 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____closures(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_closures", LOCATE_metamodel___static_type, 187);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMSignature____closures(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:232 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:233 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
     REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
@@ -1500,40 +1582,41 @@ val_t metamodel___static_type___MMSignature___adaptation_to(val_t p0, val_t p1){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:235 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:724 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-      /* ./metamodel//static_type.nit:188 */
+      /* metamodel/static_type.nit:188 */
       fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[6])(fra.me.REG[6]);
       fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___adaptation_to(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:238 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label3;
     }
   }
   label3: while(0);
-  /* ./metamodel//static_type.nit:190 */
+  /* metamodel/static_type.nit:190 */
   fra.me.REG[2] = fra.me.REG[6];
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_metamodel___static_type___MMSignature___not_for_self[] = "static_type::MMSignature::not_for_self";
 val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
   val_t REGB0;
@@ -1547,6 +1630,7 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
   fra.me.meth = LOCATE_metamodel___static_type___MMSignature___not_for_self;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -1557,16 +1641,16 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//static_type.nit:195 */
+  /* metamodel/static_type.nit:195 */
   fra.me.REG[1] = fra.me.REG[0];
-  /* ./metamodel//static_type.nit:199 */
+  /* metamodel/static_type.nit:199 */
   fra.me.REG[2] = ATTR_metamodel___static_type___MMSignature____not_for_self_cache(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
@@ -1583,35 +1667,35 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
     }
     goto label1;
   }
-  /* ./metamodel//static_type.nit:201 */
-  REGB0 = TAG_Bool(false);
-  /* ./metamodel//static_type.nit:202 */
+  /* metamodel/static_type.nit:201 */
+  REGB0 = TAG_Bool(0);
+  /* metamodel/static_type.nit:202 */
   fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
-  /* ./metamodel//static_type.nit:203 */
+  /* metamodel/static_type.nit:203 */
   REGB1 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 203);
   }
   fra.me.REG[3] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:232 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:233 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
     REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -1619,21 +1703,21 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:235 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:724 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB1)];
-      /* ./metamodel//static_type.nit:204 */
+      /* metamodel/static_type.nit:204 */
       fra.me.REG[6] = CALL_metamodel___static_type___MMParam___mmtype(fra.me.REG[5])(fra.me.REG[5]);
       fra.me.REG[6] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[6])(fra.me.REG[6]);
-      /* ./metamodel//static_type.nit:206 */
+      /* metamodel/static_type.nit:206 */
       fra.me.REG[7] = CALL_metamodel___static_type___MMParam___mmtype(fra.me.REG[5])(fra.me.REG[5]);
       REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[7],fra.me.REG[6]));
       if (UNTAG_Bool(REGB2)) {
@@ -1642,40 +1726,40 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
         REGB2 = REGB3;
       }
       if (UNTAG_Bool(REGB2)) {
-        /* ./metamodel//static_type.nit:207 */
+        /* metamodel/static_type.nit:207 */
         fra.me.REG[7] = fra.me.REG[5];
       } else {
-        /* ./metamodel//static_type.nit:209 */
-        REGB2 = TAG_Bool(true);
+        /* metamodel/static_type.nit:209 */
+        REGB2 = TAG_Bool(1);
         REGB0 = REGB2;
-        /* ./metamodel//static_type.nit:210 */
+        /* metamodel/static_type.nit:210 */
         fra.me.REG[5] = CALL_metamodel___static_type___MMParam___name(fra.me.REG[5])(fra.me.REG[5]);
         fra.me.REG[5] = NEW_MMParam_metamodel___static_type___MMParam___init(fra.me.REG[6], fra.me.REG[5]);
         fra.me.REG[7] = fra.me.REG[5];
       }
-      /* ./metamodel//static_type.nit:213 */
+      /* metamodel/static_type.nit:213 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7]);
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:238 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./metamodel//static_type.nit:216 */
+  /* metamodel/static_type.nit:216 */
   fra.me.REG[4] = ATTR_metamodel___static_type___MMSignature____return_type(fra.me.REG[1]);
-  /* ./metamodel//static_type.nit:217 */
+  /* metamodel/static_type.nit:217 */
   REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
     REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      REGB2 = TAG_Bool(false);
+      REGB2 = TAG_Bool(0);
       REGB1 = REGB2;
     } else {
       REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
@@ -1684,21 +1768,21 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
   }
   REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
   if (UNTAG_Bool(REGB1)) {
-    /* ./metamodel//static_type.nit:218 */
+    /* metamodel/static_type.nit:218 */
     REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       nit_abort("Reciever is null", NULL, LOCATE_metamodel___static_type, 218);
     }
     fra.me.REG[3] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[4] = fra.me.REG[3];
-    /* ./metamodel//static_type.nit:219 */
+    /* metamodel/static_type.nit:219 */
     fra.me.REG[3] = ATTR_metamodel___static_type___MMSignature____return_type(fra.me.REG[1]);
     REGB1 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[4],fra.me.REG[3]));
     if (UNTAG_Bool(REGB1)) {
     } else {
       REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(false);
+        REGB2 = TAG_Bool(0);
         REGB1 = REGB2;
       } else {
         REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
@@ -1707,37 +1791,37 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
     }
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(true);
+      REGB1 = TAG_Bool(1);
       REGB0 = REGB1;
     }
   }
-  /* ./metamodel//static_type.nit:222 */
+  /* metamodel/static_type.nit:222 */
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* ./metamodel//static_type.nit:223 */
+  /* metamodel/static_type.nit:223 */
   REGB1 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____closures(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_closures", LOCATE_metamodel___static_type, 223);
   }
   fra.me.REG[7] = ATTR_metamodel___static_type___MMSignature____closures(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:232 */
+  /* ../lib/standard/collection/array.nit:269 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:233 */
+  /* ../lib/standard/collection/array.nit:270 */
   REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 233);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ../lib/standard/collection/array.nit:271 */
   fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[7]);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ../lib/standard/collection/array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ../lib/standard/collection/array.nit:24 */
     REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7])!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
     REGB3 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
@@ -1745,20 +1829,20 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
     } else {
       nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ../lib/standard/kernel.nit:235 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ../lib/standard/collection/array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ../lib/standard/collection/array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 236);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:652 */
+      /* ../lib/standard/collection/array.nit:724 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
-      /* ./metamodel//static_type.nit:224 */
+      /* metamodel/static_type.nit:224 */
       fra.me.REG[8] = CALL_metamodel___static_type___MMClosure___not_for_self(fra.me.REG[6])(fra.me.REG[6]);
-      /* ./metamodel//static_type.nit:225 */
+      /* metamodel/static_type.nit:225 */
       REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[8],fra.me.REG[6]));
       if (UNTAG_Bool(REGB2)) {
       } else {
@@ -1767,26 +1851,26 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
       }
       REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
       if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(true);
+        REGB2 = TAG_Bool(1);
         REGB0 = REGB2;
       }
-      /* ./metamodel//static_type.nit:226 */
+      /* metamodel/static_type.nit:226 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8]);
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ../lib/standard/kernel.nit:238 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ../lib/standard/collection/array.nit:274 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ../lib/standard/collection/array.nit:272 */
       goto label3;
     }
   }
   label3: while(0);
-  /* ./metamodel//static_type.nit:230 */
+  /* metamodel/static_type.nit:230 */
   if (UNTAG_Bool(REGB0)) {
-    /* ./metamodel//static_type.nit:231 */
+    /* metamodel/static_type.nit:231 */
     REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____recv(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -1794,22 +1878,23 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
     }
     fra.me.REG[5] = ATTR_metamodel___static_type___MMSignature____recv(fra.me.REG[1]);
     fra.me.REG[5] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[0], fra.me.REG[4], fra.me.REG[5]);
-    /* ./metamodel//static_type.nit:232 */
+    /* metamodel/static_type.nit:232 */
     fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[5])(fra.me.REG[5]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   } else {
-    /* ./metamodel//static_type.nit:234 */
+    /* metamodel/static_type.nit:234 */
     fra.me.REG[5] = fra.me.REG[1];
   }
-  /* ./metamodel//static_type.nit:237 */
+  /* metamodel/static_type.nit:237 */
   ATTR_metamodel___static_type___MMSignature____not_for_self_cache(fra.me.REG[1]) = fra.me.REG[5];
-  /* ./metamodel//static_type.nit:238 */
+  /* metamodel/static_type.nit:238 */
   fra.me.REG[2] = fra.me.REG[5];
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_metamodel___static_type___MMSignature___init[] = "static_type::MMSignature::init";
 void metamodel___static_type___MMSignature___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMSignature].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -1821,6 +1906,7 @@ void metamodel___static_type___MMSignature___init(val_t p0, val_t p1, val_t p2,
   fra.me.meth = LOCATE_metamodel___static_type___MMSignature___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -1829,104 +1915,199 @@ void metamodel___static_type___MMSignature___init(val_t p0, val_t p1, val_t p2,
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./metamodel//static_type.nit:243 */
+  /* metamodel/static_type.nit:243 */
   ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//static_type.nit:244 */
+  /* metamodel/static_type.nit:244 */
   ATTR_metamodel___static_type___MMSignature____return_type(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./metamodel//static_type.nit:245 */
+  /* metamodel/static_type.nit:245 */
   ATTR_metamodel___static_type___MMSignature____recv(fra.me.REG[0]) = fra.me.REG[3];
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
   return;
 }
-val_t metamodel___static_type___MMClosure___name(val_t p0){
+static const char LOCATE_metamodel___static_type___MMExplicitImport___signature[] = "static_type::MMExplicitImport::signature";
+val_t metamodel___static_type___MMExplicitImport___signature(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_metamodel___static_type;
   fra.me.line = 251;
+  fra.me.meth = LOCATE_metamodel___static_type___MMExplicitImport___signature;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* metamodel/static_type.nit:251 */
+  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMExplicitImport_____atsignature(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@signature", LOCATE_metamodel___static_type, 251);
+  }
+  fra.me.REG[0] = ATTR_metamodel___static_type___MMExplicitImport_____atsignature(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_metamodel___static_type___MMExplicitImport___signature__eq[] = "static_type::MMExplicitImport::signature=";
+void metamodel___static_type___MMExplicitImport___signature__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_metamodel___static_type;
+  fra.me.line = 251;
+  fra.me.meth = LOCATE_metamodel___static_type___MMExplicitImport___signature__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* metamodel/static_type.nit:251 */
+  ATTR_metamodel___static_type___MMExplicitImport_____atsignature(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+static const char LOCATE_metamodel___static_type___MMExplicitImport___init[] = "static_type::MMExplicitImport::(abstractmetamodel::MMExplicitImport::init)";
+void metamodel___static_type___MMExplicitImport___init(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___abstractmetamodel___MMExplicitImport].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  if (init_table[itpos2]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_metamodel___static_type;
+  fra.me.line = 253;
+  fra.me.meth = LOCATE_metamodel___static_type___MMExplicitImport___init;
+  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;
+  /* metamodel/static_type.nit:253 */
+  fra.me.REG[3] = fra.me.REG[0];
+  fra.me.REG[4] = fra.me.REG[1];
+  fra.me.REG[5] = fra.me.REG[2];
+  /* metamodel/static_type.nit:255 */
+  CALL_SUPER_metamodel___static_type___MMExplicitImport___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  /* metamodel/static_type.nit:256 */
+  fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[5])(fra.me.REG[5]);
+  fra.me.REG[4] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[4])(fra.me.REG[4]);
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_metamodel___static_type, 256);
+  }
+  fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___adaptation_to(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  CALL_metamodel___static_type___MMExplicitImport___signature__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos2] = 1;
+  return;
+}
+static const char LOCATE_metamodel___static_type___MMClosure___name[] = "static_type::MMClosure::name";
+val_t metamodel___static_type___MMClosure___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_metamodel___static_type;
+  fra.me.line = 262;
   fra.me.meth = LOCATE_metamodel___static_type___MMClosure___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;
-  /* ./metamodel//static_type.nit:251 */
+  /* metamodel/static_type.nit:262 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMClosure____name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_name", LOCATE_metamodel___static_type, 251);
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_metamodel___static_type, 262);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMClosure____name(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMClosure___signature[] = "static_type::MMClosure::signature";
 val_t metamodel___static_type___MMClosure___signature(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_metamodel___static_type;
-  fra.me.line = 254;
+  fra.me.line = 265;
   fra.me.meth = LOCATE_metamodel___static_type___MMClosure___signature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//static_type.nit:254 */
+  /* metamodel/static_type.nit:265 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMClosure____signature(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_signature", LOCATE_metamodel___static_type, 254);
+    nit_abort("Uninitialized attribute %s", "_signature", LOCATE_metamodel___static_type, 265);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMClosure____signature(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMClosure___is_break[] = "static_type::MMClosure::is_break";
 val_t metamodel___static_type___MMClosure___is_break(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_metamodel___static_type;
-  fra.me.line = 257;
+  fra.me.line = 268;
   fra.me.meth = LOCATE_metamodel___static_type___MMClosure___is_break;
   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;
-  /* ./metamodel//static_type.nit:257 */
+  /* metamodel/static_type.nit:268 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMClosure____is_break(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_break", LOCATE_metamodel___static_type, 257);
+    nit_abort("Uninitialized attribute %s", "_is_break", LOCATE_metamodel___static_type, 268);
   }
   REGB0 = ATTR_metamodel___static_type___MMClosure____is_break(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMClosure___is_optional[] = "static_type::MMClosure::is_optional";
 val_t metamodel___static_type___MMClosure___is_optional(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_metamodel___static_type;
-  fra.me.line = 261;
+  fra.me.line = 272;
   fra.me.meth = LOCATE_metamodel___static_type___MMClosure___is_optional;
   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;
-  /* ./metamodel//static_type.nit:261 */
+  /* metamodel/static_type.nit:272 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMClosure____is_optional(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_optional", LOCATE_metamodel___static_type, 261);
+    nit_abort("Uninitialized attribute %s", "_is_optional", LOCATE_metamodel___static_type, 272);
   }
   REGB0 = ATTR_metamodel___static_type___MMClosure____is_optional(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMClosure___adaptation_to[] = "static_type::MMClosure::adaptation_to";
 val_t metamodel___static_type___MMClosure___adaptation_to(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -1934,40 +2115,41 @@ val_t metamodel___static_type___MMClosure___adaptation_to(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 265;
+  fra.me.line = 276;
   fra.me.meth = LOCATE_metamodel___static_type___MMClosure___adaptation_to;
   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;
-  /* ./metamodel//static_type.nit:268 */
+  /* metamodel/static_type.nit:279 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMClosure____name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_name", LOCATE_metamodel___static_type, 268);
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_metamodel___static_type, 279);
   }
   fra.me.REG[2] = ATTR_metamodel___static_type___MMClosure____name(fra.me.REG[0]);
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMClosure____signature(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_signature", LOCATE_metamodel___static_type, 268);
+    nit_abort("Uninitialized attribute %s", "_signature", LOCATE_metamodel___static_type, 279);
   }
   fra.me.REG[3] = ATTR_metamodel___static_type___MMClosure____signature(fra.me.REG[0]);
   fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___adaptation_to(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMClosure____is_break(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_break", LOCATE_metamodel___static_type, 268);
+    nit_abort("Uninitialized attribute %s", "_is_break", LOCATE_metamodel___static_type, 279);
   }
   REGB0 = ATTR_metamodel___static_type___MMClosure____is_break(fra.me.REG[0]);
   REGB1 = TAG_Bool(ATTR_metamodel___static_type___MMClosure____is_optional(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_optional", LOCATE_metamodel___static_type, 268);
+    nit_abort("Uninitialized attribute %s", "_is_optional", LOCATE_metamodel___static_type, 279);
   }
   REGB1 = ATTR_metamodel___static_type___MMClosure____is_optional(fra.me.REG[0]);
   fra.me.REG[1] = NEW_MMClosure_metamodel___static_type___MMClosure___init(fra.me.REG[2], fra.me.REG[1], REGB0, REGB1);
@@ -1976,19 +2158,21 @@ val_t metamodel___static_type___MMClosure___adaptation_to(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_metamodel___static_type___MMClosure___init[] = "static_type::MMClosure::init";
 void metamodel___static_type___MMClosure___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
-  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMClosure].i;
+  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMClosure].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
-  if (init_table[itpos2]) return;
+  if (init_table[itpos3]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 271;
+  fra.me.line = 282;
   fra.me.meth = LOCATE_metamodel___static_type___MMClosure___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -1997,18 +2181,19 @@ void metamodel___static_type___MMClosure___init(val_t p0, val_t p1, val_t p2, va
   fra.me.REG[2] = p2;
   REGB0 = p3;
   REGB1 = p4;
-  /* ./metamodel//static_type.nit:273 */
+  /* metamodel/static_type.nit:284 */
   ATTR_metamodel___static_type___MMClosure____name(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//static_type.nit:274 */
+  /* metamodel/static_type.nit:285 */
   ATTR_metamodel___static_type___MMClosure____signature(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./metamodel//static_type.nit:275 */
+  /* metamodel/static_type.nit:286 */
   ATTR_metamodel___static_type___MMClosure____is_break(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//static_type.nit:276 */
+  /* metamodel/static_type.nit:287 */
   ATTR_metamodel___static_type___MMClosure____is_optional(fra.me.REG[0]) = REGB1;
   stack_frame_head = fra.me.prev;
-  init_table[itpos2] = 1;
+  init_table[itpos3] = 1;
   return;
 }
+static const char LOCATE_metamodel___static_type___MMClosure___not_for_self[] = "static_type::MMClosure::not_for_self";
 val_t metamodel___static_type___MMClosure___not_for_self(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -2016,27 +2201,28 @@ val_t metamodel___static_type___MMClosure___not_for_self(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 279;
+  fra.me.line = 290;
   fra.me.meth = LOCATE_metamodel___static_type___MMClosure___not_for_self;
   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;
-  /* ./metamodel//static_type.nit:281 */
+  /* metamodel/static_type.nit:292 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMClosure____signature(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_signature", LOCATE_metamodel___static_type, 281);
+    nit_abort("Uninitialized attribute %s", "_signature", LOCATE_metamodel___static_type, 292);
   }
   fra.me.REG[1] = ATTR_metamodel___static_type___MMClosure____signature(fra.me.REG[0]);
   fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___not_for_self(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./metamodel//static_type.nit:282 */
+  /* metamodel/static_type.nit:293 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMClosure____signature(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_signature", LOCATE_metamodel___static_type, 282);
+    nit_abort("Uninitialized attribute %s", "_signature", LOCATE_metamodel___static_type, 293);
   }
   fra.me.REG[2] = ATTR_metamodel___static_type___MMClosure____signature(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[2]));
@@ -2047,29 +2233,29 @@ val_t metamodel___static_type___MMClosure___not_for_self(val_t p0){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./metamodel//static_type.nit:283 */
+    /* metamodel/static_type.nit:294 */
     REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMClosure____name(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_name", LOCATE_metamodel___static_type, 283);
+      nit_abort("Uninitialized attribute %s", "_name", LOCATE_metamodel___static_type, 294);
     }
     fra.me.REG[2] = ATTR_metamodel___static_type___MMClosure____name(fra.me.REG[0]);
     REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMClosure____is_break(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_is_break", LOCATE_metamodel___static_type, 283);
+      nit_abort("Uninitialized attribute %s", "_is_break", LOCATE_metamodel___static_type, 294);
     }
     REGB0 = ATTR_metamodel___static_type___MMClosure____is_break(fra.me.REG[0]);
     REGB1 = TAG_Bool(ATTR_metamodel___static_type___MMClosure____is_optional(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_is_optional", LOCATE_metamodel___static_type, 283);
+      nit_abort("Uninitialized attribute %s", "_is_optional", LOCATE_metamodel___static_type, 294);
     }
     REGB1 = ATTR_metamodel___static_type___MMClosure____is_optional(fra.me.REG[0]);
     fra.me.REG[1] = NEW_MMClosure_metamodel___static_type___MMClosure___init(fra.me.REG[2], fra.me.REG[1], REGB0, REGB1);
     goto label1;
   } else {
-    /* ./metamodel//static_type.nit:285 */
+    /* metamodel/static_type.nit:296 */
     fra.me.REG[1] = fra.me.REG[0];
     goto label1;
   }
@@ -2077,6 +2263,7 @@ val_t metamodel___static_type___MMClosure___not_for_self(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_metamodel___static_type___MMClosure_____l[] = "static_type::MMClosure::<";
 val_t metamodel___static_type___MMClosure_____l(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -2085,42 +2272,43 @@ val_t metamodel___static_type___MMClosure_____l(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 289;
+  fra.me.line = 300;
   fra.me.meth = LOCATE_metamodel___static_type___MMClosure_____l;
   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;
-  /* ./metamodel//static_type.nit:291 */
+  /* metamodel/static_type.nit:302 */
   REGB0 = CALL_metamodel___static_type___MMClosure___is_optional(fra.me.REG[1])(fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
     REGB0 = CALL_metamodel___static_type___MMClosure___is_optional(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   } else {
-    REGB1 = TAG_Bool(false);
+    REGB1 = TAG_Bool(0);
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    REGB0 = TAG_Bool(false);
+    REGB0 = TAG_Bool(0);
     goto label1;
   }
-  /* ./metamodel//static_type.nit:292 */
+  /* metamodel/static_type.nit:303 */
   REGB1 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[1])(fra.me.REG[1]);
   REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
   if (UNTAG_Bool(REGB1)) {
     REGB1 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[0])(fra.me.REG[0]);
   } else {
-    REGB2 = TAG_Bool(false);
+    REGB2 = TAG_Bool(0);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
-    REGB1 = TAG_Bool(false);
+    REGB1 = TAG_Bool(0);
     REGB0 = REGB1;
     goto label1;
   }
-  /* ./metamodel//static_type.nit:293 */
+  /* metamodel/static_type.nit:304 */
   fra.me.REG[1] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[0] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = CALL_metamodel___static_type___MMSignature_____l(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
@@ -2130,96 +2318,105 @@ val_t metamodel___static_type___MMClosure_____l(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMAncestor___stype__eq[] = "static_type::MMAncestor::stype=";
 void metamodel___static_type___MMAncestor___stype__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_metamodel___static_type;
-  fra.me.line = 299;
+  fra.me.line = 310;
   fra.me.meth = LOCATE_metamodel___static_type___MMAncestor___stype__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//static_type.nit:299 */
+  /* metamodel/static_type.nit:310 */
   ATTR_metamodel___static_type___MMAncestor____stype(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_metamodel___static_type___MMAncestor___stype[] = "static_type::MMAncestor::stype";
 val_t metamodel___static_type___MMAncestor___stype(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 302;
+  fra.me.line = 313;
   fra.me.meth = LOCATE_metamodel___static_type___MMAncestor___stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//static_type.nit:302 */
+  /* metamodel/static_type.nit:313 */
   fra.me.REG[1] = fra.me.REG[0];
-  /* ./metamodel//static_type.nit:303 */
+  /* metamodel/static_type.nit:314 */
   fra.me.REG[1] = ATTR_metamodel___static_type___MMAncestor____stype(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_metamodel___static_type, 303);
+    nit_abort("Cast failed", NULL, LOCATE_metamodel___static_type, 314);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_metamodel___static_type___MMAncestor___inheriter__eq[] = "static_type::MMAncestor::inheriter=";
 void metamodel___static_type___MMAncestor___inheriter__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_metamodel___static_type;
-  fra.me.line = 305;
+  fra.me.line = 316;
   fra.me.meth = LOCATE_metamodel___static_type___MMAncestor___inheriter__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;
-  /* ./metamodel//static_type.nit:305 */
+  /* metamodel/static_type.nit:316 */
   ATTR_metamodel___static_type___MMAncestor____inheriter(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
+static const char LOCATE_metamodel___static_type___MMAncestor___inheriter[] = "static_type::MMAncestor::inheriter";
 val_t metamodel___static_type___MMAncestor___inheriter(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 308;
+  fra.me.line = 319;
   fra.me.meth = LOCATE_metamodel___static_type___MMAncestor___inheriter;
   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;
-  /* ./metamodel//static_type.nit:308 */
+  /* metamodel/static_type.nit:319 */
   fra.me.REG[1] = fra.me.REG[0];
-  /* ./metamodel//static_type.nit:309 */
+  /* metamodel/static_type.nit:320 */
   fra.me.REG[1] = ATTR_metamodel___static_type___MMAncestor____inheriter(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_metamodel___static_type, 309);
+    nit_abort("Cast failed", NULL, LOCATE_metamodel___static_type, 320);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_metamodel___static_type___MMAncestor___is_reffinement[] = "static_type::MMAncestor::is_reffinement";
 val_t metamodel___static_type___MMAncestor___is_reffinement(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -2227,14 +2424,15 @@ val_t metamodel___static_type___MMAncestor___is_reffinement(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 311;
+  fra.me.line = 322;
   fra.me.meth = LOCATE_metamodel___static_type___MMAncestor___is_reffinement;
   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;
-  /* ./metamodel//static_type.nit:312 */
+  /* metamodel/static_type.nit:323 */
   fra.me.REG[1] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[0] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[0])(fra.me.REG[0]);
@@ -2251,6 +2449,7 @@ val_t metamodel___static_type___MMAncestor___is_reffinement(val_t p0){
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMAncestor___is_specialisation[] = "static_type::MMAncestor::is_specialisation";
 val_t metamodel___static_type___MMAncestor___is_specialisation(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -2258,14 +2457,15 @@ val_t metamodel___static_type___MMAncestor___is_specialisation(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 315;
+  fra.me.line = 326;
   fra.me.meth = LOCATE_metamodel___static_type___MMAncestor___is_specialisation;
   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;
-  /* ./metamodel//static_type.nit:316 */
+  /* metamodel/static_type.nit:327 */
   fra.me.REG[1] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
@@ -2284,20 +2484,23 @@ val_t metamodel___static_type___MMAncestor___is_specialisation(val_t p0){
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMAncestor___local_class[] = "static_type::MMAncestor::local_class";
 val_t metamodel___static_type___MMAncestor___local_class(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 319;
+  fra.me.line = 330;
   fra.me.meth = LOCATE_metamodel___static_type___MMAncestor___local_class;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./metamodel//static_type.nit:319 */
-  nit_abort("Deferred method called", NULL, LOCATE_metamodel___static_type, 319);
+  fra.me.nitni_local_ref_head = NULL;
+  /* metamodel/static_type.nit:330 */
+  nit_abort("Deferred method called", NULL, LOCATE_metamodel___static_type, 330);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
+static const char LOCATE_metamodel___static_type___MMAncestor___to_s[] = "static_type::MMAncestor::(string::Object::to_s)";
 val_t metamodel___static_type___MMAncestor___to_s(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -2305,21 +2508,22 @@ val_t metamodel___static_type___MMAncestor___to_s(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 322;
+  fra.me.line = 333;
   fra.me.meth = LOCATE_metamodel___static_type___MMAncestor___to_s;
   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;
-  /* ./metamodel//static_type.nit:324 */
+  /* metamodel/static_type.nit:335 */
   fra.me.REG[1] = ATTR_metamodel___static_type___MMAncestor____stype(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
@@ -2327,12 +2531,12 @@ val_t metamodel___static_type___MMAncestor___to_s(val_t p0){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./metamodel//static_type.nit:325 */
+    /* metamodel/static_type.nit:336 */
     fra.me.REG[1] = CALL_metamodel___static_type___MMAncestor___local_class(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
     goto label1;
   } else {
-    /* ./metamodel//static_type.nit:327 */
+    /* metamodel/static_type.nit:338 */
     fra.me.REG[0] = CALL_metamodel___static_type___MMAncestor___stype(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];
@@ -2342,174 +2546,197 @@ val_t metamodel___static_type___MMAncestor___to_s(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_metamodel___static_type___MMAncestor___init[] = "static_type::MMAncestor::init";
 void metamodel___static_type___MMAncestor___init(val_t p0, int* init_table){
-  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMAncestor].i;
+  int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMAncestor].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos3]) return;
+  if (init_table[itpos4]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
   fra.me.line = 0;
   fra.me.meth = LOCATE_metamodel___static_type___MMAncestor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  init_table[itpos3] = 1;
+  init_table[itpos4] = 1;
   return;
 }
+static const char LOCATE_metamodel___static_type___MMType___mmmodule[] = "static_type::MMType::mmmodule";
 val_t metamodel___static_type___MMType___mmmodule(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 335;
+  fra.me.line = 346;
   fra.me.meth = LOCATE_metamodel___static_type___MMType___mmmodule;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./metamodel//static_type.nit:335 */
-  nit_abort("Deferred method called", NULL, LOCATE_metamodel___static_type, 335);
+  fra.me.nitni_local_ref_head = NULL;
+  /* metamodel/static_type.nit:346 */
+  nit_abort("Deferred method called", NULL, LOCATE_metamodel___static_type, 346);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
+static const char LOCATE_metamodel___static_type___MMType___local_class[] = "static_type::MMType::local_class";
 val_t metamodel___static_type___MMType___local_class(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 338;
+  fra.me.line = 349;
   fra.me.meth = LOCATE_metamodel___static_type___MMType___local_class;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./metamodel//static_type.nit:338 */
-  nit_abort("Deferred method called", NULL, LOCATE_metamodel___static_type, 338);
+  fra.me.nitni_local_ref_head = NULL;
+  /* metamodel/static_type.nit:349 */
+  nit_abort("Deferred method called", NULL, LOCATE_metamodel___static_type, 349);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
+static const char LOCATE_metamodel___static_type___MMType___is_valid[] = "static_type::MMType::is_valid";
 val_t metamodel___static_type___MMType___is_valid(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_metamodel___static_type;
-  fra.me.line = 341;
+  fra.me.line = 352;
   fra.me.meth = LOCATE_metamodel___static_type___MMType___is_valid;
   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;
-  /* ./metamodel//static_type.nit:343 */
-  REGB0 = TAG_Bool(true);
+  /* metamodel/static_type.nit:354 */
+  REGB0 = TAG_Bool(1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMType_____l[] = "static_type::MMType::<";
 val_t metamodel___static_type___MMType_____l(val_t p0, val_t p1){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 345;
+  fra.me.line = 356;
   fra.me.meth = LOCATE_metamodel___static_type___MMType_____l;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./metamodel//static_type.nit:345 */
-  nit_abort("Deferred method called", NULL, LOCATE_metamodel___static_type, 345);
+  fra.me.nitni_local_ref_head = NULL;
+  /* metamodel/static_type.nit:356 */
+  nit_abort("Deferred method called", NULL, LOCATE_metamodel___static_type, 356);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
+static const char LOCATE_metamodel___static_type___MMType___is_supertype[] = "static_type::MMType::is_supertype";
 val_t metamodel___static_type___MMType___is_supertype(val_t p0, val_t p1){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 348;
+  fra.me.line = 359;
   fra.me.meth = LOCATE_metamodel___static_type___MMType___is_supertype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./metamodel//static_type.nit:348 */
-  nit_abort("Deferred method called", NULL, LOCATE_metamodel___static_type, 348);
+  fra.me.nitni_local_ref_head = NULL;
+  /* metamodel/static_type.nit:359 */
+  nit_abort("Deferred method called", NULL, LOCATE_metamodel___static_type, 359);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
+static const char LOCATE_metamodel___static_type___MMType___for_module[] = "static_type::MMType::for_module";
 val_t metamodel___static_type___MMType___for_module(val_t p0, val_t p1){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 353;
+  fra.me.line = 364;
   fra.me.meth = LOCATE_metamodel___static_type___MMType___for_module;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./metamodel//static_type.nit:353 */
-  nit_abort("Deferred method called", NULL, LOCATE_metamodel___static_type, 353);
+  fra.me.nitni_local_ref_head = NULL;
+  /* metamodel/static_type.nit:364 */
+  nit_abort("Deferred method called", NULL, LOCATE_metamodel___static_type, 364);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
+static const char LOCATE_metamodel___static_type___MMType___adapt_to[] = "static_type::MMType::adapt_to";
 val_t metamodel___static_type___MMType___adapt_to(val_t p0, val_t p1){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 356;
+  fra.me.line = 367;
   fra.me.meth = LOCATE_metamodel___static_type___MMType___adapt_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./metamodel//static_type.nit:356 */
-  nit_abort("Deferred method called", NULL, LOCATE_metamodel___static_type, 356);
+  fra.me.nitni_local_ref_head = NULL;
+  /* metamodel/static_type.nit:367 */
+  nit_abort("Deferred method called", NULL, LOCATE_metamodel___static_type, 367);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
+static const char LOCATE_metamodel___static_type___MMType___upcast_for[] = "static_type::MMType::upcast_for";
 val_t metamodel___static_type___MMType___upcast_for(val_t p0, val_t p1){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 360;
+  fra.me.line = 371;
   fra.me.meth = LOCATE_metamodel___static_type___MMType___upcast_for;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./metamodel//static_type.nit:360 */
-  nit_abort("Deferred method called", NULL, LOCATE_metamodel___static_type, 360);
+  fra.me.nitni_local_ref_head = NULL;
+  /* metamodel/static_type.nit:371 */
+  nit_abort("Deferred method called", NULL, LOCATE_metamodel___static_type, 371);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
+static const char LOCATE_metamodel___static_type___MMType___not_for_self[] = "static_type::MMType::not_for_self";
 val_t metamodel___static_type___MMType___not_for_self(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 382;
+  fra.me.line = 393;
   fra.me.meth = LOCATE_metamodel___static_type___MMType___not_for_self;
   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;
-  /* ./metamodel//static_type.nit:384 */
+  /* metamodel/static_type.nit:395 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMType___is_nullable[] = "static_type::MMType::is_nullable";
 val_t metamodel___static_type___MMType___is_nullable(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_metamodel___static_type;
-  fra.me.line = 389;
+  fra.me.line = 400;
   fra.me.meth = LOCATE_metamodel___static_type___MMType___is_nullable;
   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;
-  /* ./metamodel//static_type.nit:390 */
-  REGB0 = TAG_Bool(false);
+  /* metamodel/static_type.nit:401 */
+  REGB0 = TAG_Bool(0);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMType___as_nullable[] = "static_type::MMType::as_nullable";
 val_t metamodel___static_type___MMType___as_nullable(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -2517,23 +2744,24 @@ val_t metamodel___static_type___MMType___as_nullable(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 392;
+  fra.me.line = 403;
   fra.me.meth = LOCATE_metamodel___static_type___MMType___as_nullable;
   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;
-  /* ./metamodel//static_type.nit:395 */
+  /* metamodel/static_type.nit:406 */
   fra.me.REG[1] = ATTR_metamodel___static_type___MMType____as_nullable_cache(fra.me.REG[0]);
-  /* ./metamodel//static_type.nit:396 */
+  /* metamodel/static_type.nit:407 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
+      REGB1 = TAG_Bool(0);
       REGB0 = REGB1;
     } else {
       REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
@@ -2544,66 +2772,96 @@ val_t metamodel___static_type___MMType___as_nullable(val_t p0){
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./metamodel//static_type.nit:397 */
+  /* metamodel/static_type.nit:408 */
   fra.me.REG[2] = NEW_MMNullableType_metamodel___static_type___MMNullableType___init(fra.me.REG[0]);
-  /* ./metamodel//static_type.nit:398 */
+  /* metamodel/static_type.nit:409 */
   ATTR_metamodel___static_type___MMType____as_nullable_cache(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./metamodel//static_type.nit:399 */
+  /* metamodel/static_type.nit:410 */
   fra.me.REG[1] = fra.me.REG[2];
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_metamodel___static_type___MMType___as_notnull[] = "static_type::MMType::as_notnull";
 val_t metamodel___static_type___MMType___as_notnull(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 402;
+  fra.me.line = 413;
   fra.me.meth = LOCATE_metamodel___static_type___MMType___as_notnull;
   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;
-  /* ./metamodel//static_type.nit:404 */
+  /* metamodel/static_type.nit:415 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMType___init[] = "static_type::MMType::init";
 void metamodel___static_type___MMType___init(val_t p0, int* init_table){
-  int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMType].i;
+  int itpos5 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMType].i;
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  if (init_table[itpos4]) return;
+  if (init_table[itpos5]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
   fra.me.line = 0;
   fra.me.meth = LOCATE_metamodel___static_type___MMType___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
   stack_frame_head = fra.me.prev;
-  init_table[itpos4] = 1;
+  init_table[itpos5] = 1;
   return;
 }
+static const char LOCATE_metamodel___static_type___MMNullableType___base_type[] = "static_type::MMNullableType::base_type";
+val_t metamodel___static_type___MMNullableType___base_type(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_metamodel___static_type;
+  fra.me.line = 420;
+  fra.me.meth = LOCATE_metamodel___static_type___MMNullableType___base_type;
+  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;
+  /* metamodel/static_type.nit:420 */
+  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 420);
+  }
+  fra.me.REG[0] = ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_metamodel___static_type___MMNullableType___is_valid[] = "static_type::MMNullableType::(static_type::MMType::is_valid)";
 val_t metamodel___static_type___MMNullableType___is_valid(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_metamodel___static_type;
-  fra.me.line = 410;
+  fra.me.line = 421;
   fra.me.meth = LOCATE_metamodel___static_type___MMNullableType___is_valid;
   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;
-  /* ./metamodel//static_type.nit:410 */
+  /* metamodel/static_type.nit:421 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 410);
+    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 421);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0]);
   REGB0 = CALL_metamodel___static_type___MMType___is_valid(fra.me.REG[0])(fra.me.REG[0]);
@@ -2612,42 +2870,46 @@ val_t metamodel___static_type___MMNullableType___is_valid(val_t p0){
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMNullableType___is_nullable[] = "static_type::MMNullableType::(static_type::MMType::is_nullable)";
 val_t metamodel___static_type___MMNullableType___is_nullable(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_metamodel___static_type;
-  fra.me.line = 411;
+  fra.me.line = 422;
   fra.me.meth = LOCATE_metamodel___static_type___MMNullableType___is_nullable;
   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;
-  /* ./metamodel//static_type.nit:411 */
-  REGB0 = TAG_Bool(true);
+  /* metamodel/static_type.nit:422 */
+  REGB0 = TAG_Bool(1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMNullableType___as_notnull[] = "static_type::MMNullableType::(static_type::MMType::as_notnull)";
 val_t metamodel___static_type___MMNullableType___as_notnull(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_metamodel___static_type;
-  fra.me.line = 412;
+  fra.me.line = 423;
   fra.me.meth = LOCATE_metamodel___static_type___MMNullableType___as_notnull;
   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;
-  /* ./metamodel//static_type.nit:412 */
+  /* metamodel/static_type.nit:423 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 412);
+    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 423);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0]);
   goto label1;
@@ -2655,64 +2917,70 @@ val_t metamodel___static_type___MMNullableType___as_notnull(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMNullableType___as_nullable[] = "static_type::MMNullableType::(static_type::MMType::as_nullable)";
 val_t metamodel___static_type___MMNullableType___as_nullable(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 413;
+  fra.me.line = 424;
   fra.me.meth = LOCATE_metamodel___static_type___MMNullableType___as_nullable;
   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;
-  /* ./metamodel//static_type.nit:413 */
+  /* metamodel/static_type.nit:424 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMNullableType___init[] = "static_type::MMNullableType::init";
 void metamodel___static_type___MMNullableType___init(val_t p0, val_t p1, int* init_table){
-  int itpos5 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMNullableType].i;
+  int itpos6 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMNullableType].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t tmp;
-  if (init_table[itpos5]) return;
+  if (init_table[itpos6]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 414;
+  fra.me.line = 425;
   fra.me.meth = LOCATE_metamodel___static_type___MMNullableType___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//static_type.nit:414 */
+  /* metamodel/static_type.nit:425 */
   fra.me.REG[2] = fra.me.REG[0];
   CALL_metamodel___static_type___MMType___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[2]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  init_table[itpos5] = 1;
+  init_table[itpos6] = 1;
   return;
 }
+static const char LOCATE_metamodel___static_type___MMNullableType___mmmodule[] = "static_type::MMNullableType::(static_type::MMType::mmmodule)";
 val_t metamodel___static_type___MMNullableType___mmmodule(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 416;
+  fra.me.line = 427;
   fra.me.meth = LOCATE_metamodel___static_type___MMNullableType___mmmodule;
   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;
-  /* ./metamodel//static_type.nit:416 */
+  /* metamodel/static_type.nit:427 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 416);
+    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 427);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
@@ -2721,23 +2989,25 @@ val_t metamodel___static_type___MMNullableType___mmmodule(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMNullableType___local_class[] = "static_type::MMNullableType::(static_type::MMType::local_class)";
 val_t metamodel___static_type___MMNullableType___local_class(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_metamodel___static_type;
-  fra.me.line = 418;
+  fra.me.line = 429;
   fra.me.meth = LOCATE_metamodel___static_type___MMNullableType___local_class;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//static_type.nit:418 */
+  /* metamodel/static_type.nit:429 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 418);
+    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 429);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
@@ -2746,6 +3016,7 @@ val_t metamodel___static_type___MMNullableType___local_class(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMNullableType_____l[] = "static_type::MMNullableType::(static_type::MMType::<)";
 val_t metamodel___static_type___MMNullableType_____l(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -2753,27 +3024,28 @@ val_t metamodel___static_type___MMNullableType_____l(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 420;
+  fra.me.line = 431;
   fra.me.meth = LOCATE_metamodel___static_type___MMNullableType_____l;
   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;
-  /* ./metamodel//static_type.nit:422 */
+  /* metamodel/static_type.nit:433 */
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 422);
+      nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 433);
     }
     fra.me.REG[0] = ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0]);
     fra.me.REG[1] = CALL_metamodel___static_type___MMType___as_notnull(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   } else {
-    REGB1 = TAG_Bool(false);
+    REGB1 = TAG_Bool(0);
     REGB0 = REGB1;
   }
   goto label1;
@@ -2781,6 +3053,7 @@ val_t metamodel___static_type___MMNullableType_____l(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMNullableType___to_s[] = "static_type::MMNullableType::(string::Object::to_s)";
 val_t metamodel___static_type___MMNullableType___to_s(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -2789,15 +3062,16 @@ val_t metamodel___static_type___MMNullableType___to_s(val_t p0){
   static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 425;
+  fra.me.line = 436;
   fra.me.meth = LOCATE_metamodel___static_type___MMNullableType___to_s;
   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;
-  /* ./metamodel//static_type.nit:427 */
+  /* metamodel/static_type.nit:438 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2812,7 +3086,7 @@ val_t metamodel___static_type___MMNullableType___to_s(val_t p0){
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 427);
+    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 438);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
@@ -2832,25 +3106,27 @@ val_t metamodel___static_type___MMNullableType___to_s(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_metamodel___static_type___MMNullableType___is_supertype[] = "static_type::MMNullableType::(static_type::MMType::is_supertype)";
 val_t metamodel___static_type___MMNullableType___is_supertype(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 430;
+  fra.me.line = 441;
   fra.me.meth = LOCATE_metamodel___static_type___MMNullableType___is_supertype;
   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;
-  /* ./metamodel//static_type.nit:432 */
+  /* metamodel/static_type.nit:443 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 432);
+    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 443);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0]);
   REGB0 = CALL_metamodel___static_type___MMType___is_supertype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
@@ -2859,25 +3135,27 @@ val_t metamodel___static_type___MMNullableType___is_supertype(val_t p0, val_t p1
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMNullableType___for_module[] = "static_type::MMNullableType::(static_type::MMType::for_module)";
 val_t metamodel___static_type___MMNullableType___for_module(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 435;
+  fra.me.line = 446;
   fra.me.meth = LOCATE_metamodel___static_type___MMNullableType___for_module;
   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;
-  /* ./metamodel//static_type.nit:437 */
+  /* metamodel/static_type.nit:448 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 437);
+    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 448);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0]);
   fra.me.REG[1] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
@@ -2887,25 +3165,27 @@ val_t metamodel___static_type___MMNullableType___for_module(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_metamodel___static_type___MMNullableType___adapt_to[] = "static_type::MMNullableType::(static_type::MMType::adapt_to)";
 val_t metamodel___static_type___MMNullableType___adapt_to(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 440;
+  fra.me.line = 451;
   fra.me.meth = LOCATE_metamodel___static_type___MMNullableType___adapt_to;
   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;
-  /* ./metamodel//static_type.nit:442 */
+  /* metamodel/static_type.nit:453 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 442);
+    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 453);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0]);
   fra.me.REG[1] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
@@ -2915,25 +3195,27 @@ val_t metamodel___static_type___MMNullableType___adapt_to(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_metamodel___static_type___MMNullableType___upcast_for[] = "static_type::MMNullableType::(static_type::MMType::upcast_for)";
 val_t metamodel___static_type___MMNullableType___upcast_for(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 445;
+  fra.me.line = 456;
   fra.me.meth = LOCATE_metamodel___static_type___MMNullableType___upcast_for;
   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;
-  /* ./metamodel//static_type.nit:447 */
+  /* metamodel/static_type.nit:458 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 447);
+    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 458);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0]);
   fra.me.REG[1] = CALL_metamodel___static_type___MMType___upcast_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
@@ -2942,23 +3224,25 @@ val_t metamodel___static_type___MMNullableType___upcast_for(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_metamodel___static_type___MMNullableType___not_for_self[] = "static_type::MMNullableType::(static_type::MMType::not_for_self)";
 val_t metamodel___static_type___MMNullableType___not_for_self(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_metamodel___static_type;
-  fra.me.line = 450;
+  fra.me.line = 461;
   fra.me.meth = LOCATE_metamodel___static_type___MMNullableType___not_for_self;
   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;
-  /* ./metamodel//static_type.nit:452 */
+  /* metamodel/static_type.nit:463 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 452);
+    nit_abort("Uninitialized attribute %s", "_base_type", LOCATE_metamodel___static_type, 463);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMNullableType____base_type(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[0])(fra.me.REG[0]);
@@ -2968,45 +3252,49 @@ val_t metamodel___static_type___MMNullableType___not_for_self(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMTypeClass___local_class[] = "static_type::MMTypeClass::(static_type::MMType::local_class)";
 val_t metamodel___static_type___MMTypeClass___local_class(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_metamodel___static_type;
-  fra.me.line = 458;
+  fra.me.line = 469;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeClass___local_class;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//static_type.nit:458 */
+  /* metamodel/static_type.nit:469 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___static_type, 458);
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___static_type, 469);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMTypeClass___mmmodule[] = "static_type::MMTypeClass::(static_type::MMType::mmmodule)";
 val_t metamodel___static_type___MMTypeClass___mmmodule(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 459;
+  fra.me.line = 470;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeClass___mmmodule;
   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;
-  /* ./metamodel//static_type.nit:459 */
+  /* metamodel/static_type.nit:470 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___static_type, 459);
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___static_type, 470);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
@@ -3015,44 +3303,48 @@ val_t metamodel___static_type___MMTypeClass___mmmodule(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMTypeClass_____l[] = "static_type::MMTypeClass::(static_type::MMType::<)";
 val_t metamodel___static_type___MMTypeClass_____l(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 460;
+  fra.me.line = 471;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeClass_____l;
   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;
-  /* ./metamodel//static_type.nit:460 */
+  /* metamodel/static_type.nit:471 */
   REGB0 = CALL_metamodel___static_type___MMType___is_supertype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMTypeClass___to_s[] = "static_type::MMTypeClass::(string::Object::to_s)";
 val_t metamodel___static_type___MMTypeClass___to_s(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 462;
+  fra.me.line = 473;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeClass___to_s;
   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;
-  /* ./metamodel//static_type.nit:464 */
+  /* metamodel/static_type.nit:475 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___static_type, 464);
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___static_type, 475);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
@@ -3061,6 +3353,7 @@ val_t metamodel___static_type___MMTypeClass___to_s(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMTypeClass___upcast_for[] = "static_type::MMTypeClass::(static_type::MMType::upcast_for)";
 val_t metamodel___static_type___MMTypeClass___upcast_for(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -3068,23 +3361,24 @@ val_t metamodel___static_type___MMTypeClass___upcast_for(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 467;
+  fra.me.line = 478;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeClass___upcast_for;
   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;
-  /* ./metamodel//static_type.nit:469 */
+  /* metamodel/static_type.nit:480 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* ./metamodel//static_type.nit:470 */
+  /* metamodel/static_type.nit:481 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___static_type, 470);
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___static_type, 481);
   }
   fra.me.REG[3] = ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -3095,68 +3389,72 @@ val_t metamodel___static_type___MMTypeClass___upcast_for(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./metamodel//static_type.nit:471 */
+    /* metamodel/static_type.nit:482 */
     REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___static_type, 471);
+      nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___static_type, 482);
     }
     fra.me.REG[0] = ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0]);
     fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___ancestor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
     fra.me.REG[2] = fra.me.REG[1];
   }
-  /* ./metamodel//static_type.nit:473 */
+  /* metamodel/static_type.nit:484 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_metamodel___static_type___MMTypeClass___init[] = "static_type::MMTypeClass::init";
 void metamodel___static_type___MMTypeClass___init(val_t p0, val_t p1, int* init_table){
-  int itpos6 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMTypeClass].i;
+  int itpos7 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMTypeClass].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t tmp;
-  if (init_table[itpos6]) return;
+  if (init_table[itpos7]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 476;
+  fra.me.line = 487;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeClass___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//static_type.nit:476 */
+  /* metamodel/static_type.nit:487 */
   fra.me.REG[2] = fra.me.REG[0];
   CALL_metamodel___static_type___MMType___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./metamodel//static_type.nit:478 */
+  /* metamodel/static_type.nit:489 */
   ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[2]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  init_table[itpos6] = 1;
+  init_table[itpos7] = 1;
   return;
 }
+static const char LOCATE_metamodel___static_type___MMTypeSimpleClass___is_supertype[] = "static_type::MMTypeSimpleClass::(static_type::MMType::is_supertype)";
 val_t metamodel___static_type___MMTypeSimpleClass___is_supertype(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 484;
+  fra.me.line = 495;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeSimpleClass___is_supertype;
   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;
-  /* ./metamodel//static_type.nit:486 */
+  /* metamodel/static_type.nit:497 */
   fra.me.REG[1] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___static_type, 486);
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___static_type, 497);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0]);
   REGB0 = CALL_metamodel___partial_order___PartialOrderElement_____leq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
@@ -3165,6 +3463,7 @@ val_t metamodel___static_type___MMTypeSimpleClass___is_supertype(val_t p0, val_t
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMTypeSimpleClass___for_module[] = "static_type::MMTypeSimpleClass::(static_type::MMType::for_module)";
 val_t metamodel___static_type___MMTypeSimpleClass___for_module(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
@@ -3172,19 +3471,20 @@ val_t metamodel___static_type___MMTypeSimpleClass___for_module(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 489;
+  fra.me.line = 500;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeSimpleClass___for_module;
   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;
-  /* ./metamodel//static_type.nit:491 */
+  /* metamodel/static_type.nit:502 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* ./metamodel//static_type.nit:492 */
+  /* metamodel/static_type.nit:503 */
   fra.me.REG[3] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
   if (UNTAG_Bool(REGB0)) {
@@ -3194,104 +3494,113 @@ val_t metamodel___static_type___MMTypeSimpleClass___for_module(val_t p0, val_t p
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./metamodel//static_type.nit:493 */
+    /* metamodel/static_type.nit:504 */
     REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___static_type, 493);
+      nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___static_type, 504);
     }
     fra.me.REG[0] = ATTR_metamodel___static_type___MMTypeClass____local_class(fra.me.REG[0]);
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
     fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[2] = fra.me.REG[1];
   }
-  /* ./metamodel//static_type.nit:495 */
+  /* metamodel/static_type.nit:506 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
+static const char LOCATE_metamodel___static_type___MMTypeSimpleClass___adapt_to[] = "static_type::MMTypeSimpleClass::(static_type::MMType::adapt_to)";
 val_t metamodel___static_type___MMTypeSimpleClass___adapt_to(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_metamodel___static_type;
-  fra.me.line = 498;
+  fra.me.line = 509;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeSimpleClass___adapt_to;
   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;
-  /* ./metamodel//static_type.nit:498 */
+  /* metamodel/static_type.nit:509 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMTypeSimpleClass___init[] = "static_type::MMTypeSimpleClass::init";
 void metamodel___static_type___MMTypeSimpleClass___init(val_t p0, val_t p1, int* init_table){
-  int itpos7 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMTypeSimpleClass].i;
+  int itpos8 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMTypeSimpleClass].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  if (init_table[itpos7]) return;
+  if (init_table[itpos8]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 500;
+  fra.me.line = 511;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeSimpleClass___init;
   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;
-  /* ./metamodel//static_type.nit:502 */
+  /* metamodel/static_type.nit:513 */
   CALL_metamodel___static_type___MMTypeClass___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], init_table);
   stack_frame_head = fra.me.prev;
-  init_table[itpos7] = 1;
+  init_table[itpos8] = 1;
   return;
 }
+static const char LOCATE_metamodel___static_type___MMTypeNone___mmmodule[] = "static_type::MMTypeNone::(static_type::MMType::mmmodule)";
 val_t metamodel___static_type___MMTypeNone___mmmodule(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 509;
+  fra.me.line = 520;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeNone___mmmodule;
   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;
-  /* ./metamodel//static_type.nit:509 */
+  /* metamodel/static_type.nit:520 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMTypeNone____mmmodule(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_metamodel___static_type, 509);
+    nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_metamodel___static_type, 520);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMTypeNone____mmmodule(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMTypeNone___is_nullable[] = "static_type::MMTypeNone::(static_type::MMType::is_nullable)";
 val_t metamodel___static_type___MMTypeNone___is_nullable(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_metamodel___static_type;
-  fra.me.line = 510;
+  fra.me.line = 521;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeNone___is_nullable;
   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;
-  /* ./metamodel//static_type.nit:510 */
-  REGB0 = TAG_Bool(true);
+  /* metamodel/static_type.nit:521 */
+  REGB0 = TAG_Bool(1);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMTypeNone_____l[] = "static_type::MMTypeNone::(static_type::MMType::<)";
 val_t metamodel___static_type___MMTypeNone_____l(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -3299,18 +3608,19 @@ val_t metamodel___static_type___MMTypeNone_____l(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 511;
+  fra.me.line = 522;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeNone_____l;
   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;
-  /* ./metamodel//static_type.nit:511 */
+  /* metamodel/static_type.nit:522 */
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
   if (UNTAG_Bool(REGB0)) {
-    REGB0 = TAG_Bool(true);
+    REGB0 = TAG_Bool(1);
   } else {
     REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMNullableType, ID_metamodel___static_type___MMNullableType)) /*cast MMNullableType*/;
     REGB0 = REGB1;
@@ -3320,6 +3630,7 @@ val_t metamodel___static_type___MMTypeNone_____l(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMTypeNone___to_s[] = "static_type::MMTypeNone::(string::Object::to_s)";
 val_t metamodel___static_type___MMTypeNone___to_s(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -3327,13 +3638,14 @@ val_t metamodel___static_type___MMTypeNone___to_s(val_t p0){
   static val_t once_value_1; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 512;
+  fra.me.line = 523;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeNone___to_s;
   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;
-  /* ./metamodel//static_type.nit:512 */
+  /* metamodel/static_type.nit:523 */
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString("null");
     REGB0 = TAG_Int(4);
@@ -3347,140 +3659,155 @@ val_t metamodel___static_type___MMTypeNone___to_s(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMTypeNone___is_supertype[] = "static_type::MMTypeNone::(static_type::MMType::is_supertype)";
 val_t metamodel___static_type___MMTypeNone___is_supertype(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 513;
+  fra.me.line = 524;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeNone___is_supertype;
   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;
-  /* ./metamodel//static_type.nit:513 */
-  REGB0 = TAG_Bool(false);
+  /* metamodel/static_type.nit:524 */
+  REGB0 = TAG_Bool(0);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
+static const char LOCATE_metamodel___static_type___MMTypeNone___local_class[] = "static_type::MMTypeNone::(static_type::MMType::local_class)";
 val_t metamodel___static_type___MMTypeNone___local_class(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 514;
+  fra.me.line = 525;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeNone___local_class;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//static_type.nit:514 */
-  nit_abort("Aborted", NULL, LOCATE_metamodel___static_type, 514);
+  /* metamodel/static_type.nit:525 */
+  nit_abort("Aborted", NULL, LOCATE_metamodel___static_type, 525);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
+static const char LOCATE_metamodel___static_type___MMTypeNone___upcast_for[] = "static_type::MMTypeNone::(static_type::MMType::upcast_for)";
 val_t metamodel___static_type___MMTypeNone___upcast_for(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_metamodel___static_type;
-  fra.me.line = 515;
+  fra.me.line = 526;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeNone___upcast_for;
   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;
-  /* ./metamodel//static_type.nit:515 */
-  nit_abort("Aborted", NULL, LOCATE_metamodel___static_type, 515);
+  /* metamodel/static_type.nit:526 */
+  nit_abort("Aborted", NULL, LOCATE_metamodel___static_type, 526);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
+static const char LOCATE_metamodel___static_type___MMTypeNone___as_nullable[] = "static_type::MMTypeNone::(static_type::MMType::as_nullable)";
 val_t metamodel___static_type___MMTypeNone___as_nullable(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 516;
+  fra.me.line = 527;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeNone___as_nullable;
   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;
-  /* ./metamodel//static_type.nit:516 */
+  /* metamodel/static_type.nit:527 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMTypeNone___as_notnull[] = "static_type::MMTypeNone::(static_type::MMType::as_notnull)";
 val_t metamodel___static_type___MMTypeNone___as_notnull(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 517;
+  fra.me.line = 528;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeNone___as_notnull;
   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;
-  /* ./metamodel//static_type.nit:517 */
-  nit_abort("Aborted", NULL, LOCATE_metamodel___static_type, 517);
+  /* metamodel/static_type.nit:528 */
+  nit_abort("Aborted", NULL, LOCATE_metamodel___static_type, 528);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
+static const char LOCATE_metamodel___static_type___MMTypeNone___init[] = "static_type::MMTypeNone::init";
 void metamodel___static_type___MMTypeNone___init(val_t p0, val_t p1, int* init_table){
-  int itpos8 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMTypeNone].i;
+  int itpos9 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMTypeNone].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t tmp;
-  if (init_table[itpos8]) return;
+  if (init_table[itpos9]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 519;
+  fra.me.line = 530;
   fra.me.meth = LOCATE_metamodel___static_type___MMTypeNone___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//static_type.nit:519 */
+  /* metamodel/static_type.nit:530 */
   fra.me.REG[2] = fra.me.REG[0];
   CALL_metamodel___static_type___MMType___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_metamodel___static_type___MMTypeNone____mmmodule(fra.me.REG[2]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  init_table[itpos8] = 1;
+  init_table[itpos9] = 1;
   return;
 }
+static const char LOCATE_metamodel___static_type___MMModule___type_none[] = "static_type::MMModule::type_none";
 val_t metamodel___static_type___MMModule___type_none(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_metamodel___static_type;
-  fra.me.line = 523;
+  fra.me.line = 534;
   fra.me.meth = LOCATE_metamodel___static_type___MMModule___type_none;
   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;
-  /* ./metamodel//static_type.nit:523 */
+  /* metamodel/static_type.nit:534 */
   REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMModule____type_none(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_type_none", LOCATE_metamodel___static_type, 523);
+    nit_abort("Uninitialized attribute %s", "_type_none", LOCATE_metamodel___static_type, 534);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMModule____type_none(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+static const char LOCATE_metamodel___static_type___MMModule___type_bool[] = "static_type::MMModule::type_bool";
 val_t metamodel___static_type___MMModule___type_bool(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -3489,14 +3816,15 @@ val_t metamodel___static_type___MMModule___type_bool(val_t p0){
     static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___static_type;
-  fra.me.line = 526;
+  fra.me.line = 537;
   fra.me.meth = LOCATE_metamodel___static_type___MMModule___type_bool;
   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;
-  /* ./metamodel//static_type.nit:529 */
+  /* metamodel/static_type.nit:540 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Bool");
@@ -3506,7 +3834,7 @@ val_t metamodel___static_type___MMModule___type_bool(val_t p0){
       register_static_object(&once_value_2);
     } else fra.me.REG[1] = once_value_2;
     fra.me.REG[1] = fra.me.REG[1];
-    fra.me.REG[1] = CALL_standard___symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
+    fra.me.REG[1] = CALL_symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
     once_value_1 = fra.me.REG[1];
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
@@ -3518,3 +3846,333 @@ val_t metamodel___static_type___MMModule___type_bool(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+static const char LOCATE_metamodel___static_type___MMImportedCast___from[] = "static_type::MMImportedCast::from";
+val_t metamodel___static_type___MMImportedCast___from(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_metamodel___static_type;
+  fra.me.line = 546;
+  fra.me.meth = LOCATE_metamodel___static_type___MMImportedCast___from;
+  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;
+  /* metamodel/static_type.nit:546 */
+  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMImportedCast____from(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_from", LOCATE_metamodel___static_type, 546);
+  }
+  fra.me.REG[0] = ATTR_metamodel___static_type___MMImportedCast____from(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_metamodel___static_type___MMImportedCast___to[] = "static_type::MMImportedCast::to";
+val_t metamodel___static_type___MMImportedCast___to(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_metamodel___static_type;
+  fra.me.line = 547;
+  fra.me.meth = LOCATE_metamodel___static_type___MMImportedCast___to;
+  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;
+  /* metamodel/static_type.nit:547 */
+  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMImportedCast____to(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_to", LOCATE_metamodel___static_type, 547);
+  }
+  fra.me.REG[0] = ATTR_metamodel___static_type___MMImportedCast____to(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+static const char LOCATE_metamodel___static_type___MMImportedCast___is_about_nullable_only[] = "static_type::MMImportedCast::is_about_nullable_only";
+val_t metamodel___static_type___MMImportedCast___is_about_nullable_only(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_metamodel___static_type;
+  fra.me.line = 549;
+  fra.me.meth = LOCATE_metamodel___static_type___MMImportedCast___is_about_nullable_only;
+  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;
+  /* metamodel/static_type.nit:551 */
+  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMImportedCast____from(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_from", LOCATE_metamodel___static_type, 551);
+  }
+  fra.me.REG[1] = ATTR_metamodel___static_type___MMImportedCast____from(fra.me.REG[0]);
+  REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
+  if (UNTAG_Bool(REGB0)) {
+    REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMImportedCast____to(fra.me.REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_to", LOCATE_metamodel___static_type, 551);
+    }
+    fra.me.REG[1] = ATTR_metamodel___static_type___MMImportedCast____to(fra.me.REG[0]);
+    fra.me.REG[1] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[1])(fra.me.REG[1]);
+    REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMImportedCast____from(fra.me.REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_from", LOCATE_metamodel___static_type, 551);
+    }
+    fra.me.REG[2] = ATTR_metamodel___static_type___MMImportedCast____from(fra.me.REG[0]);
+    REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[2]));
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+      REGB0 = REGB1;
+    }
+  } else {
+    REGB1 = TAG_Bool(0);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    REGB0 = TAG_Bool(1);
+  } else {
+    /* metamodel/static_type.nit:552 */
+    REGB1 = TAG_Bool(ATTR_metamodel___static_type___MMImportedCast____to(fra.me.REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_to", LOCATE_metamodel___static_type, 552);
+    }
+    fra.me.REG[2] = ATTR_metamodel___static_type___MMImportedCast____to(fra.me.REG[0]);
+    REGB1 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(ATTR_metamodel___static_type___MMImportedCast____from(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_from", LOCATE_metamodel___static_type, 552);
+      }
+      fra.me.REG[2] = ATTR_metamodel___static_type___MMImportedCast____from(fra.me.REG[0]);
+      fra.me.REG[2] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[2])(fra.me.REG[2]);
+      REGB1 = TAG_Bool(ATTR_metamodel___static_type___MMImportedCast____to(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_to", LOCATE_metamodel___static_type, 552);
+      }
+      fra.me.REG[0] = ATTR_metamodel___static_type___MMImportedCast____to(fra.me.REG[0]);
+      REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[0]));
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+        REGB1 = REGB2;
+      }
+    } else {
+      REGB2 = TAG_Bool(0);
+      REGB1 = REGB2;
+    }
+    /* metamodel/static_type.nit:551 */
+    REGB0 = REGB1;
+  }
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_metamodel___static_type___MMImportedCast___is_not_null_to_nullable[] = "static_type::MMImportedCast::is_not_null_to_nullable";
+val_t metamodel___static_type___MMImportedCast___is_not_null_to_nullable(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_metamodel___static_type;
+  fra.me.line = 555;
+  fra.me.meth = LOCATE_metamodel___static_type___MMImportedCast___is_not_null_to_nullable;
+  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;
+  /* metamodel/static_type.nit:557 */
+  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMImportedCast____from(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_from", LOCATE_metamodel___static_type, 557);
+  }
+  fra.me.REG[1] = ATTR_metamodel___static_type___MMImportedCast____from(fra.me.REG[0]);
+  REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMImportedCast____to(fra.me.REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_to", LOCATE_metamodel___static_type, 557);
+    }
+    fra.me.REG[0] = ATTR_metamodel___static_type___MMImportedCast____to(fra.me.REG[0]);
+    REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
+  } else {
+    REGB1 = TAG_Bool(0);
+    REGB0 = REGB1;
+  }
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_metamodel___static_type___MMImportedCast___is_nullable_to_not_null[] = "static_type::MMImportedCast::is_nullable_to_not_null";
+val_t metamodel___static_type___MMImportedCast___is_nullable_to_not_null(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_metamodel___static_type;
+  fra.me.line = 560;
+  fra.me.meth = LOCATE_metamodel___static_type___MMImportedCast___is_nullable_to_not_null;
+  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;
+  /* metamodel/static_type.nit:562 */
+  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMImportedCast____from(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_from", LOCATE_metamodel___static_type, 562);
+  }
+  fra.me.REG[1] = ATTR_metamodel___static_type___MMImportedCast____from(fra.me.REG[0]);
+  REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[1])(fra.me.REG[1]);
+  if (UNTAG_Bool(REGB0)) {
+    REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMImportedCast____to(fra.me.REG[0])!=NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_to", LOCATE_metamodel___static_type, 562);
+    }
+    fra.me.REG[0] = ATTR_metamodel___static_type___MMImportedCast____to(fra.me.REG[0]);
+    REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  } else {
+    REGB1 = TAG_Bool(0);
+    REGB0 = REGB1;
+  }
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_metamodel___static_type___MMImportedCast_____eqeq[] = "static_type::MMImportedCast::(kernel::Object::==)";
+val_t metamodel___static_type___MMImportedCast_____eqeq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_metamodel___static_type;
+  fra.me.line = 565;
+  fra.me.meth = LOCATE_metamodel___static_type___MMImportedCast_____eqeq;
+  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;
+  /* metamodel/static_type.nit:567 */
+  REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMImportedCast, ID_metamodel___static_type___MMImportedCast)) /*cast MMImportedCast*/;
+  if (UNTAG_Bool(REGB0)) {
+    /* metamodel/static_type.nit:568 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_metamodel___static_type, 568);
+    }
+    fra.me.REG[2] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[1])(fra.me.REG[1]);
+    fra.me.REG[3] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
+    REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+      REGB0 = REGB1;
+    }
+  } else {
+    /* metamodel/static_type.nit:567 */
+    REGB1 = TAG_Bool(0);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
+    /* metamodel/static_type.nit:568 */
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_metamodel___static_type, 568);
+    }
+    fra.me.REG[1] = CALL_metamodel___static_type___MMImportedCast___to(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]);
+    REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[0]));
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+      REGB0 = REGB1;
+    }
+  } else {
+    /* metamodel/static_type.nit:567 */
+    REGB1 = TAG_Bool(0);
+    REGB0 = REGB1;
+  }
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+static const char LOCATE_metamodel___static_type___MMImportedCast___init[] = "static_type::MMImportedCast::init";
+void metamodel___static_type___MMImportedCast___init(val_t p0, val_t p1, val_t p2, int* init_table){
+  int itpos10 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMImportedCast].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t tmp;
+  if (init_table[itpos10]) return;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_metamodel___static_type;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_metamodel___static_type___MMImportedCast___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.nitni_local_ref_head = NULL;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  ATTR_metamodel___static_type___MMImportedCast____from(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_metamodel___static_type___MMImportedCast____to(fra.me.REG[0]) = fra.me.REG[2];
+  stack_frame_head = fra.me.prev;
+  init_table[itpos10] = 1;
+  return;
+}
+static const char LOCATE_metamodel___static_type___MMMethod___explicit_casts[] = "static_type::MMMethod::explicit_casts";
+val_t metamodel___static_type___MMMethod___explicit_casts(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_metamodel___static_type;
+  fra.me.line = 574;
+  fra.me.meth = LOCATE_metamodel___static_type___MMMethod___explicit_casts;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  fra.me.nitni_local_ref_head = NULL;
+  /* metamodel/static_type.nit:574 */
+  nit_abort("Deferred method called", NULL, LOCATE_metamodel___static_type, 574);
+  stack_frame_head = fra.me.prev;
+  return NIT_NULL;
+}