misc: update Changelog and NOTICE; remove BUGS and TODO
[nit.git] / c_src / compiling_global._sep.c
index 2f1ad2d..1fa7bb7 100644 (file)
 /* This C file is generated by NIT to compile module compiling_global. */
 #include "compiling_global._sep.h"
 val_t compiling_global___ColorContext___color(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::ColorContext::color (src/compiling//compiling_global.nit:28,2--31:18)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 28, LOCATE_compiling_global___ColorContext___color};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_compiling_global___ColorContext____colors( self) /*ColorContext::_colors*/;
-  variable1 = ((abstract_collection___CoupleMap_____bra_t)CALL(variable1,COLOR_abstract_collection___Map_____bra))(variable1,  variable0 /*e*/) /*HashMap::[]*/;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_compiling_global___ColorContext____colors(variable[0]) /*ColorContext::_colors*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_abstract_collection___MapRead_____bra(variable[3])(variable[3],  variable[1] /*e*/) /*CoupleMap::[]*/;
+  variable[2] = variable[3];
   goto return_label0;
   return_label0: while(false);
   tracehead = trace.prev;
-  return variable1;
+  return variable[2];
 }
 val_t compiling_global___ColorContext___has_color(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::ColorContext::has_color (src/compiling//compiling_global.nit:34,2--37:46)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_compiling_global___ColorContext____colors( self) /*ColorContext::_colors*/;
-  variable1 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable1 ==  NIT_NULL /*null*/) || ((variable1 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable1, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable1,COLOR_kernel___Object_____eqeq))(variable1,  NIT_NULL /*null*/) /*HashMap::==*/)))))));
-  variable2 = variable1;
-  if (UNTAG_Bool(variable2)) { /* and */
-    variable2 = ATTR_compiling_global___ColorContext____colors( self) /*ColorContext::_colors*/;
-    variable2 = ((abstract_collection___CoupleMap___has_key_t)CALL(variable2,COLOR_abstract_collection___Map___has_key))(variable2,  variable0 /*e*/) /*HashMap::has_key*/;
-  }
-  variable1 = variable2;
+  struct trace_t trace = {NULL, NULL, 34, LOCATE_compiling_global___ColorContext___has_color};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_compiling_global___ColorContext____colors(variable[0]) /*ColorContext::_colors*/;
+  /* Register variable[3]: Result */
+  variable[3] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[3] ==  NIT_NULL /*null*/) || ((variable[3] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[3])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[3], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[3])(variable[3],  NIT_NULL /*null*/) /*Object::==*/)))))));
+  /* Ensure var variable[3]: Left 'and' operand*/
+  if (UNTAG_Bool(variable[3])) { /* and */
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_compiling_global___ColorContext____colors(variable[0]) /*ColorContext::_colors*/;
+    /* Register variable[3]: Result */
+    variable[3] = CALL_abstract_collection___MapRead___has_key(variable[3])(variable[3],  variable[1] /*e*/) /*CoupleMap::has_key*/;
+  }
+  /* Register variable[3]: Result */
+  variable[2] = variable[3];
   goto return_label1;
   return_label1: while(false);
   tracehead = trace.prev;
-  return variable1;
+  return variable[2];
 }
 void compiling_global___ColorContext___color__eq(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "compiling_global::ColorContext::color= (src/compiling//compiling_global.nit:40,2--48:16)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-    val_t variable5;
-    val_t variable6;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = ATTR_compiling_global___ColorContext____colors( self) /*ColorContext::_colors*/;
-  variable2 = TAG_Bool((variable2 ==  NIT_NULL /*null*/) || ((variable2 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable2, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable2,COLOR_kernel___Object_____eqeq))(variable2,  NIT_NULL /*null*/) /*HashMap::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable2 = NEW_hash___HashMap___init(); /*new HashMap[TableElt, Int]*/
-    ATTR_compiling_global___ColorContext____colors( self) /*ColorContext::_colors*/ = variable2;
-  }
-  variable2 = ATTR_compiling_global___ColorContext____colors( self) /*ColorContext::_colors*/;
-  ((hash___HashMap_____braeq_t)CALL(variable2,COLOR_abstract_collection___Map_____braeq))(variable2,  variable0 /*e*/,  variable1 /*c*/) /*HashMap::[]=*/;
-  variable2 =  variable1 /*c*/;
-  variable3 = ((compiling_global___TableElt___length_t)CALL( variable0 /*e*/,COLOR_compiling_global___TableElt___length))( variable0 /*e*/) /*TableElt::length*/;
-  variable4 = NEW_range___Range___without_last( TAG_Int(0), variable3); /*new Range[Int]*/
-  variable3 = variable4;
-  variable3 = ((range___Range___iterator_t)CALL(variable3,COLOR_abstract_collection___Collection___iterator))(variable3) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 40, LOCATE_compiling_global___ColorContext___color__eq};
+  val_t variable[10];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_compiling_global___ColorContext____colors(variable[0]) /*ColorContext::_colors*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool((variable[4] ==  NIT_NULL /*null*/) || ((variable[4] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[4])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[4], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[4])(variable[4],  NIT_NULL /*null*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    /* Register variable[4]: Result */
+    variable[4] = NEW_HashMap_hash___HashMap___init() /*new HashMap[TableElt, Int]*/;
+    ATTR_compiling_global___ColorContext____colors(variable[0]) /*ColorContext::_colors*/ = variable[4];
+  }
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_compiling_global___ColorContext____colors(variable[0]) /*ColorContext::_colors*/;
+  CALL_abstract_collection___Map_____braeq(variable[4])(variable[4],  variable[1] /*e*/,  variable[2] /*c*/) /*HashMap::[]=*/;
+  /* Register variable[4]: Local variable */
+  variable[4] =  variable[2] /*c*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_compiling_global___TableElt___length( variable[1] /*e*/)( variable[1] /*e*/) /*TableElt::length*/;
+  /* Register variable[5]: Result */
+  variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[5]) /*new Range[Int]*/;
+  /* Register variable[5]: For iterator */
+  variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable4 = ((abstract_collection___Iterator___is_ok_t)CALL(variable3,COLOR_abstract_collection___Iterator___is_ok))(variable3) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable4)) break; /*for*/
-    variable4 = ((abstract_collection___Iterator___item_t)CALL(variable3,COLOR_abstract_collection___Iterator___item))(variable3) /*Iterator::item*/;
-    variable5 = ATTR_compiling_global___ColorContext____colors( self) /*ColorContext::_colors*/;
-    variable6 = ((compiling_global___TableElt___item_t)CALL( variable0 /*e*/,COLOR_compiling_global___TableElt___item))( variable0 /*e*/,  variable4 /*i*/) /*TableElt::item*/;
-    ((hash___HashMap_____braeq_t)CALL(variable5,COLOR_abstract_collection___Map_____braeq))(variable5, variable6,  variable2 /*idx*/) /*HashMap::[]=*/;
-    variable5 = TAG_Int(UNTAG_Int( variable2 /*idx*/)+UNTAG_Int( TAG_Int(1)));
-    variable2 = variable5 /*idx=*/;
+    /* Register variable[6]: For 'is_ok' result */
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[6])) break; /*for*/
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[7]: Local variable */
+    variable[7] = variable[6];
+    /* Register variable[8]: Result */
+    variable[8] = ATTR_compiling_global___ColorContext____colors(variable[0]) /*ColorContext::_colors*/;
+    /* Register variable[9]: Result */
+    variable[9] = CALL_compiling_global___TableElt___item( variable[1] /*e*/)( variable[1] /*e*/,  variable[7] /*i*/) /*TableElt::item*/;
+    CALL_abstract_collection___Map_____braeq(variable[8])(variable[8], variable[9],  variable[4] /*idx*/) /*HashMap::[]=*/;
+    /* Register variable[8]: Result */
+    variable[8] = TAG_Int(UNTAG_Int( variable[4] /*idx*/)+UNTAG_Int( TAG_Int(1)));
+    variable[4] = variable[8] /*idx=*/;
     continue_3: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*Iterator::next*/;
   }
   break_3: while(0);
+  return_label2: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void compiling_global___ColorContext___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 0, LOCATE_compiling_global___ColorContext___init};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
   tracehead = trace.prev;
   return;
 }
 val_t compiling_global___GlobalAnalysis___compiled_classes(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::GlobalAnalysis::compiled_classes (src/compiling//compiling_global.nit:56,2--57:70)"};
+  struct trace_t trace = {NULL, NULL, 56, LOCATE_compiling_global___GlobalAnalysis___compiled_classes};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
   tracehead = trace.prev;
   return ATTR_compiling_global___GlobalAnalysis____compiled_classes( self) /*GlobalAnalysis::_compiled_classes*/;
 }
 val_t compiling_global___GlobalAnalysis___module(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::GlobalAnalysis::module (src/compiling//compiling_global.nit:59,2--60:32)"};
+  struct trace_t trace = {NULL, NULL, 59, LOCATE_compiling_global___GlobalAnalysis___module};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
   tracehead = trace.prev;
   return ATTR_compiling_global___GlobalAnalysis____module( self) /*GlobalAnalysis::_module*/;
 }
 val_t compiling_global___GlobalAnalysis___max_class_table_length(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::GlobalAnalysis::max_class_table_length (src/compiling//compiling_global.nit:62,2--63:52)"};
+  struct trace_t trace = {NULL, NULL, 62, LOCATE_compiling_global___GlobalAnalysis___max_class_table_length};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
   tracehead = trace.prev;
   return ATTR_compiling_global___GlobalAnalysis____max_class_table_length( self) /*GlobalAnalysis::_max_class_table_length*/;
 }
 void compiling_global___GlobalAnalysis___max_class_table_length__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::GlobalAnalysis::max_class_table_length= (src/compiling//compiling_global.nit:62,2--63:52)"};
+  struct trace_t trace = {NULL, NULL, 62, LOCATE_compiling_global___GlobalAnalysis___max_class_table_length__eq};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
   ATTR_compiling_global___GlobalAnalysis____max_class_table_length( self) /*GlobalAnalysis::_max_class_table_length*/ =  param0;
   tracehead = trace.prev;
   return;
 }
 void compiling_global___GlobalAnalysis___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "compiling_global::GlobalAnalysis::init (src/compiling//compiling_global.nit:65,2--68:18)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 65, LOCATE_compiling_global___GlobalAnalysis___init};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_GlobalAnalysis].i]) return;
-  variable1 = NEW_hash___HashMap___init(); /*new HashMap[MMGlobalClass, CompiledClass]*/
-  ATTR_compiling_global___GlobalAnalysis____compiled_classes( self) /*GlobalAnalysis::_compiled_classes*/ = variable1;
-  ATTR_compiling_global___GlobalAnalysis____module( self) /*GlobalAnalysis::_module*/ =  variable0 /*module*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_GlobalAnalysis].i] = 1;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_GlobalAnalysis].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_compiling_global___GlobalAnalysis____module(variable[0]) /*GlobalAnalysis::_module*/ =  variable[1] /*module*/;
+  return_label4: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_GlobalAnalysis].i] = 1;
   tracehead = trace.prev;
   return;
 }
-val_t compiling_global___CompilerVisitor___global_analysis(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::CompilerVisitor::global_analysis (src/compiling//compiling_global.nit:73,2--74:56)"};
+val_t compiling_global___GlobalCompilerVisitor___global_analysis(val_t  self) {
+  struct trace_t trace = {NULL, NULL, 73, LOCATE_compiling_global___GlobalCompilerVisitor___global_analysis};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
   tracehead = trace.prev;
-  return ATTR_compiling_global___CompilerVisitor____global_analysis( self) /*CompilerVisitor::_global_analysis*/;
+  return ATTR_compiling_global___GlobalCompilerVisitor____global_analysis( self) /*GlobalCompilerVisitor::_global_analysis*/;
 }
-void compiling_global___CompilerVisitor___global_analysis__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::CompilerVisitor::global_analysis= (src/compiling//compiling_global.nit:73,2--74:56)"};
+void compiling_global___GlobalCompilerVisitor___init(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 75, LOCATE_compiling_global___GlobalCompilerVisitor___init};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  ATTR_compiling_global___CompilerVisitor____global_analysis( self) /*CompilerVisitor::_global_analysis*/ =  param0;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_GlobalCompilerVisitor].i]) return;
+  /* Register variable[4]: Method return value and escape marker */
+  CALL_compiling_base___CompilerVisitor___init(variable[0])(variable[0],  variable[1] /*m*/,  variable[2] /*tc*/, init_table /*YYY*/) /*CompilerVisitor::init*/;
+  ATTR_compiling_global___GlobalCompilerVisitor____global_analysis(variable[0]) /*GlobalCompilerVisitor::_global_analysis*/ =  variable[3] /*ga*/;
+  return_label5: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_GlobalCompilerVisitor].i] = 1;
   tracehead = trace.prev;
   return;
 }
 val_t compiling_global___CompiledClass___local_class(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::CompiledClass::local_class (src/compiling//compiling_global.nit:80,2--81:41)"};
+  struct trace_t trace = {NULL, NULL, 85, LOCATE_compiling_global___CompiledClass___local_class};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
   tracehead = trace.prev;
   return ATTR_compiling_global___CompiledClass____local_class( self) /*CompiledClass::_local_class*/;
 }
 val_t compiling_global___CompiledClass___id(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::CompiledClass::id (src/compiling//compiling_global.nit:83,2--84:32)"};
+  struct trace_t trace = {NULL, NULL, 88, LOCATE_compiling_global___CompiledClass___id};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
   tracehead = trace.prev;
   return ATTR_compiling_global___CompiledClass____id( self) /*CompiledClass::_id*/;
 }
 void compiling_global___CompiledClass___id__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::CompiledClass::id= (src/compiling//compiling_global.nit:83,2--84:32)"};
+  struct trace_t trace = {NULL, NULL, 88, LOCATE_compiling_global___CompiledClass___id__eq};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
   ATTR_compiling_global___CompiledClass____id( self) /*CompiledClass::_id*/ =  param0;
   tracehead = trace.prev;
   return;
 }
 val_t compiling_global___CompiledClass___class_table(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::CompiledClass::class_table (src/compiling//compiling_global.nit:86,2--87:52)"};
+  struct trace_t trace = {NULL, NULL, 91, LOCATE_compiling_global___CompiledClass___class_table};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
   tracehead = trace.prev;
   return ATTR_compiling_global___CompiledClass____class_table( self) /*CompiledClass::_class_table*/;
 }
-void compiling_global___CompiledClass___class_table__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::CompiledClass::class_table= (src/compiling//compiling_global.nit:86,2--87:52)"};
-  trace.prev = tracehead; tracehead = &trace;
-  ATTR_compiling_global___CompiledClass____class_table( self) /*CompiledClass::_class_table*/ =  param0;
-  tracehead = trace.prev;
-  return;
-}
 val_t compiling_global___CompiledClass___instance_table(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::CompiledClass::instance_table (src/compiling//compiling_global.nit:89,2--90:55)"};
+  struct trace_t trace = {NULL, NULL, 94, LOCATE_compiling_global___CompiledClass___instance_table};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
   tracehead = trace.prev;
   return ATTR_compiling_global___CompiledClass____instance_table( self) /*CompiledClass::_instance_table*/;
 }
-void compiling_global___CompiledClass___instance_table__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::CompiledClass::instance_table= (src/compiling//compiling_global.nit:89,2--90:55)"};
-  trace.prev = tracehead; tracehead = &trace;
-  ATTR_compiling_global___CompiledClass____instance_table( self) /*CompiledClass::_instance_table*/ =  param0;
-  tracehead = trace.prev;
-  return;
-}
 val_t compiling_global___CompiledClass___class_layout(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::CompiledClass::class_layout (src/compiling//compiling_global.nit:92,2--93:56)"};
+  struct trace_t trace = {NULL, NULL, 97, LOCATE_compiling_global___CompiledClass___class_layout};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
   tracehead = trace.prev;
   return ATTR_compiling_global___CompiledClass____class_layout( self) /*CompiledClass::_class_layout*/;
 }
-void compiling_global___CompiledClass___class_layout__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::CompiledClass::class_layout= (src/compiling//compiling_global.nit:92,2--93:56)"};
-  trace.prev = tracehead; tracehead = &trace;
-  ATTR_compiling_global___CompiledClass____class_layout( self) /*CompiledClass::_class_layout*/ =  param0;
-  tracehead = trace.prev;
-  return;
-}
 val_t compiling_global___CompiledClass___instance_layout(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::CompiledClass::instance_layout (src/compiling//compiling_global.nit:95,2--96:59)"};
+  struct trace_t trace = {NULL, NULL, 100, LOCATE_compiling_global___CompiledClass___instance_layout};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
   tracehead = trace.prev;
   return ATTR_compiling_global___CompiledClass____instance_layout( self) /*CompiledClass::_instance_layout*/;
 }
-void compiling_global___CompiledClass___instance_layout__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::CompiledClass::instance_layout= (src/compiling//compiling_global.nit:95,2--96:59)"};
-  trace.prev = tracehead; tracehead = &trace;
-  ATTR_compiling_global___CompiledClass____instance_layout( self) /*CompiledClass::_instance_layout*/ =  param0;
-  tracehead = trace.prev;
-  return;
-}
 void compiling_global___CompiledClass___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "compiling_global::CompiledClass::init (src/compiling//compiling_global.nit:98,2--42)"};
-  val_t variable0;
+  struct trace_t trace = {NULL, NULL, 103, LOCATE_compiling_global___CompiledClass___init};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_CompiledClass].i]) return;
-  ATTR_compiling_global___CompiledClass____local_class( self) /*CompiledClass::_local_class*/ =  variable0 /*c*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_CompiledClass].i] = 1;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_CompiledClass].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_compiling_global___CompiledClass____local_class(variable[0]) /*CompiledClass::_local_class*/ =  variable[1] /*c*/;
+  return_label6: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_CompiledClass].i] = 1;
   tracehead = trace.prev;
   return;
 }
-val_t compiling_global___MMGlobalProperty___pos_of(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::MMGlobalProperty::pos_of (src/compiling//compiling_global.nit:102,2--104:36)"};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return ATTR_compiling_global___MMGlobalProperty____pos_of( self) /*MMGlobalProperty::_pos_of*/;
-}
-void compiling_global___MMGlobalProperty___pos_of__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::MMGlobalProperty::pos_of= (src/compiling//compiling_global.nit:102,2--104:36)"};
-  trace.prev = tracehead; tracehead = &trace;
-  ATTR_compiling_global___MMGlobalProperty____pos_of( self) /*MMGlobalProperty::_pos_of*/ =  param0;
-  tracehead = trace.prev;
-  return;
-}
-val_t compiling_global___MMSrcLocalClass___base_attr_pos(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::MMSrcLocalClass::base_attr_pos (src/compiling//compiling_global.nit:108,2--109:50)"};
-  trace.prev = tracehead; tracehead = &trace;
-  tracehead = trace.prev;
-  return ATTR_compiling_global___MMSrcLocalClass____base_attr_pos( self) /*MMSrcLocalClass::_base_attr_pos*/;
-}
 val_t compiling_global___MMSrcLocalClass___class_color_pos(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::MMSrcLocalClass::class_color_pos (src/compiling//compiling_global.nit:111,2--112:54)"};
+  struct trace_t trace = {NULL, NULL, 107, LOCATE_compiling_global___MMSrcLocalClass___class_color_pos};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
   tracehead = trace.prev;
   return ATTR_compiling_global___MMSrcLocalClass____class_color_pos( self) /*MMSrcLocalClass::_class_color_pos*/;
 }
 val_t compiling_global___MMSrcLocalClass___class_layout(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::MMSrcLocalClass::class_layout (src/compiling//compiling_global.nit:114,2--115:49)"};
+  struct trace_t trace = {NULL, NULL, 110, LOCATE_compiling_global___MMSrcLocalClass___class_layout};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
   tracehead = trace.prev;
   return ATTR_compiling_global___MMSrcLocalClass____class_layout( self) /*MMSrcLocalClass::_class_layout*/;
 }
 val_t compiling_global___MMSrcLocalClass___instance_layout(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::MMSrcLocalClass::instance_layout (src/compiling//compiling_global.nit:117,2--118:52)"};
+  struct trace_t trace = {NULL, NULL, 113, LOCATE_compiling_global___MMSrcLocalClass___instance_layout};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
   tracehead = trace.prev;
   return ATTR_compiling_global___MMSrcLocalClass____instance_layout( self) /*MMSrcLocalClass::_instance_layout*/;
 }
 void compiling_global___MMSrcLocalClass___build_layout_in(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "compiling_global::MMSrcLocalClass::build_layout_in (src/compiling//compiling_global.nit:120,2--160:25)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-    val_t variable7;
-    val_t variable8;
-    val_t variable9;
-    val_t variable10;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable3 = NEW_array___Array___init(); /*new Array[MMGlobalProperty]*/
-  variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[MMGlobalProperty]*/
-  variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[LocalTableElt]*/
-  variable4 = variable5;
-  ATTR_compiling_global___MMSrcLocalClass____class_layout( self) /*MMSrcLocalClass::_class_layout*/ =  variable4 /*clt*/;
-  variable6 = NEW_array___Array___init(); /*new Array[LocalTableElt]*/
-  variable5 = variable6;
-  ATTR_compiling_global___MMSrcLocalClass____instance_layout( self) /*MMSrcLocalClass::_instance_layout*/ =  variable5 /*ilt*/;
-  variable6 = ((abstractmetamodel___MMLocalClass___global_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___global))( self) /*MMSrcLocalClass::global*/;
-  variable6 = ((abstractmetamodel___MMGlobalClass___intro_t)CALL(variable6,COLOR_abstractmetamodel___MMGlobalClass___intro))(variable6) /*MMGlobalClass::intro*/;
-  variable6 = TAG_Bool((variable6 ==  self) || ((variable6 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable6,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable6, self)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable6,COLOR_kernel___Object_____eqeq))(variable6,  self) /*MMLocalClass::==*/)))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    variable6 = NEW_compiling_global___TableEltClassIdPos___init( self); /*new TableEltClassIdPos*/
-    ((array___AbstractArray___add_t)CALL( variable1 /*module_table*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*module_table*/, variable6) /*Array::add*/;
-    variable6 = NEW_compiling_global___TableEltClassColorPos___init( self); /*new TableEltClassColorPos*/
-    ATTR_compiling_global___MMSrcLocalClass____class_color_pos( self) /*MMSrcLocalClass::_class_color_pos*/ = variable6;
-    variable6 = ATTR_compiling_global___MMSrcLocalClass____class_color_pos( self) /*MMSrcLocalClass::_class_color_pos*/;
-    ((array___AbstractArray___add_t)CALL( variable1 /*module_table*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*module_table*/, variable6) /*Array::add*/;
-    variable6 = NEW_compiling_global___TableEltClassInitTablePos___init( self); /*new TableEltClassInitTablePos*/
-    ((array___AbstractArray___add_t)CALL( variable4 /*clt*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*clt*/, variable6) /*Array::add*/;
-  }
-  variable6 = ((syntax_base___MMSrcLocalClass___src_local_properties_t)CALL( self,COLOR_syntax_base___MMSrcLocalClass___src_local_properties))( self) /*MMSrcLocalClass::src_local_properties*/;
-  variable6 = ((abstract_collection___Map___iterator_t)CALL(variable6,COLOR_abstract_collection___Collection___iterator))(variable6) /*Map::iterator*/;
+  struct trace_t trace = {NULL, NULL, 116, LOCATE_compiling_global___MMSrcLocalClass___build_layout_in};
+  val_t variable[11];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Local variable */
+  /* Register variable[5]: Result */
+  variable[5] = ATTR_compiling_global___MMSrcLocalClass____class_layout(variable[0]) /*MMSrcLocalClass::_class_layout*/;
+  variable[4] = variable[5];
+  /* Register variable[5]: Local variable */
+  /* Register variable[6]: Result */
+  variable[6] = ATTR_compiling_global___MMSrcLocalClass____instance_layout(variable[0]) /*MMSrcLocalClass::_instance_layout*/;
+  variable[5] = variable[6];
+  /* Register variable[6]: Result */
+  variable[6] = CALL_abstractmetamodel___MMLocalClass___global(variable[0])(variable[0]) /*MMLocalClass::global*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_abstractmetamodel___MMGlobalClass___intro(variable[6])(variable[6]) /*MMGlobalClass::intro*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool((variable[6] == variable[0]) || ((variable[6] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[6])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[6],variable[0])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[6])(variable[6], variable[0]) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    /* Register variable[6]: Result */
+    variable[6] = NEW_TableEltClassId_compiling_global___AbsTableEltClass___init(variable[0]) /*new TableEltClassId*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[2] /*module_table*/)( variable[2] /*module_table*/, variable[6]) /*AbstractArray::add*/;
+    /* Register variable[6]: Result */
+    variable[6] = NEW_TableEltClassColor_compiling_global___AbsTableEltClass___init(variable[0]) /*new TableEltClassColor*/;
+    ATTR_compiling_global___MMSrcLocalClass____class_color_pos(variable[0]) /*MMSrcLocalClass::_class_color_pos*/ = variable[6];
+    /* Register variable[6]: Result */
+    variable[6] = ATTR_compiling_global___MMSrcLocalClass____class_color_pos(variable[0]) /*MMSrcLocalClass::_class_color_pos*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[2] /*module_table*/)( variable[2] /*module_table*/, variable[6]) /*AbstractArray::add*/;
+    /* Register variable[6]: Result */
+    variable[6] = NEW_TableEltClassInitTable_compiling_global___AbsTableEltClass___init(variable[0]) /*new TableEltClassInitTable*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[4] /*clt*/)( variable[4] /*clt*/, variable[6]) /*AbstractArray::add*/;
+  }
+  /* Register variable[6]: Result */
+  variable[6] = CALL_syntax_base___MMSrcLocalClass___src_local_properties(variable[0])(variable[0]) /*MMSrcLocalClass::src_local_properties*/;
+  /* Register variable[6]: For iterator */
+  variable[6] = CALL_abstract_collection___Collection___iterator(variable[6])(variable[6]) /*MapRead::iterator*/;
   while (true) { /*for*/
-    variable7 = ((abstract_collection___Iterator___is_ok_t)CALL(variable6,COLOR_abstract_collection___Iterator___is_ok))(variable6) /*MapIterator::is_ok*/;
-    if (!UNTAG_Bool(variable7)) break; /*for*/
-    variable7 = ((abstract_collection___Iterator___item_t)CALL(variable6,COLOR_abstract_collection___Iterator___item))(variable6) /*MapIterator::item*/;
-    variable9 = ((abstractmetamodel___MMLocalProperty___global_t)CALL( variable7 /*p*/,COLOR_abstractmetamodel___MMLocalProperty___global))( variable7 /*p*/) /*MMSrcLocalProperty::global*/;
-    variable8 = variable9;
-    variable9 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL( variable8 /*pg*/,COLOR_abstractmetamodel___MMGlobalProperty___intro))( variable8 /*pg*/) /*MMGlobalProperty::intro*/;
-    variable9 = TAG_Bool((variable9 ==  variable7 /*p*/) || ((variable9 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable9,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable9, variable7 /*p*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable9,COLOR_kernel___Object_____eqeq))(variable9,  variable7 /*p*/) /*MMConcreteProperty::==*/)))));
-    if (UNTAG_Bool(variable9)) { /*if*/
-      variable9 = TAG_Bool(( variable7 /*p*/==NIT_NULL) || VAL_ISA( variable7 /*p*/, COLOR_MMSrcAttribute, ID_MMSrcAttribute)) /*cast MMSrcAttribute*/;
-      if (UNTAG_Bool(variable9)) { /*if*/
-        variable9 = ((array___AbstractArray___length_t)CALL( variable3 /*intro_attributes*/,COLOR_abstract_collection___Collection___length))( variable3 /*intro_attributes*/) /*Array::length*/;
-        ((compiling_global___MMGlobalProperty___pos_of__eq_t)CALL( variable8 /*pg*/,COLOR_compiling_global___MMGlobalProperty___pos_of__eq))( variable8 /*pg*/, variable9) /*MMGlobalProperty::pos_of=*/;
-        ((array___AbstractArray___add_t)CALL( variable3 /*intro_attributes*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*intro_attributes*/,  variable8 /*pg*/) /*Array::add*/;
-        variable9 = NEW_compiling_global___TableEltAttrPos___init( variable7 /*p*/); /*new TableEltAttrPos*/
-        ((array___AbstractArray___add_t)CALL( variable5 /*ilt*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*ilt*/, variable9) /*Array::add*/;
+    /* Register variable[7]: For 'is_ok' result */
+    variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[7])) break; /*for*/
+    variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[8]: Local variable */
+    variable[8] = variable[7];
+    /* Register variable[9]: Local variable */
+    /* Register variable[10]: Result */
+    variable[10] = CALL_abstractmetamodel___MMLocalProperty___global( variable[8] /*p*/)( variable[8] /*p*/) /*MMLocalProperty::global*/;
+    variable[9] = variable[10];
+    /* Register variable[10]: Result */
+    variable[10] = CALL_abstractmetamodel___MMGlobalProperty___intro( variable[9] /*pg*/)( variable[9] /*pg*/) /*MMGlobalProperty::intro*/;
+    /* Register variable[10]: Result */
+    variable[10] = TAG_Bool((variable[10] ==  variable[8] /*p*/) || ((variable[10] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[10])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[10], variable[8] /*p*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[10])(variable[10],  variable[8] /*p*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[10])) { /*if*/
+      /* Register variable[10]: Result */
+      variable[10] = TAG_Bool(( variable[8] /*p*/==NIT_NULL) || VAL_ISA( variable[8] /*p*/, COLOR_MMSrcAttribute, ID_MMSrcAttribute)) /*cast MMSrcAttribute*/;
+      if (UNTAG_Bool(variable[10])) { /*if*/
+        /* Register variable[10]: Result */
+        variable[10] = NEW_TableEltAttr_compiling_global___TableEltProp___init( variable[8] /*p*/) /*new TableEltAttr*/;
+        CALL_abstract_collection___SimpleCollection___add( variable[5] /*ilt*/)( variable[5] /*ilt*/, variable[10]) /*AbstractArray::add*/;
       } else { /*if*/
-        variable9 = TAG_Bool(( variable7 /*p*/==NIT_NULL) || VAL_ISA( variable7 /*p*/, COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/;
-        if (UNTAG_Bool(variable9)) { /*if*/
-          variable9 = ((array___AbstractArray___length_t)CALL( variable2 /*intro_methods*/,COLOR_abstract_collection___Collection___length))( variable2 /*intro_methods*/) /*Array::length*/;
-          ((compiling_global___MMGlobalProperty___pos_of__eq_t)CALL( variable8 /*pg*/,COLOR_compiling_global___MMGlobalProperty___pos_of__eq))( variable8 /*pg*/, variable9) /*MMGlobalProperty::pos_of=*/;
-          ((array___AbstractArray___add_t)CALL( variable2 /*intro_methods*/,COLOR_abstract_collection___SimpleCollection___add))( variable2 /*intro_methods*/,  variable8 /*pg*/) /*Array::add*/;
-          variable9 = NEW_compiling_global___TableEltMethPos___init( variable7 /*p*/); /*new TableEltMethPos*/
-          ((array___AbstractArray___add_t)CALL( variable4 /*clt*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*clt*/, variable9) /*Array::add*/;
+        /* Register variable[10]: Result */
+        variable[10] = TAG_Bool(( variable[8] /*p*/==NIT_NULL) || VAL_ISA( variable[8] /*p*/, COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/;
+        if (UNTAG_Bool(variable[10])) { /*if*/
+          /* Register variable[10]: Result */
+          variable[10] = NEW_TableEltMeth_compiling_global___TableEltProp___init( variable[8] /*p*/) /*new TableEltMeth*/;
+          CALL_abstract_collection___SimpleCollection___add( variable[4] /*clt*/)( variable[4] /*clt*/, variable[10]) /*AbstractArray::add*/;
         }
       }
     }
-    variable9 = TAG_Bool(( variable7 /*p*/==NIT_NULL) || VAL_ISA( variable7 /*p*/, COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/;
-    variable10 = variable9;
-    if (UNTAG_Bool(variable10)) { /* and */
-      variable10 = ((abstractmetamodel___MMConcreteProperty___need_super_t)CALL( variable7 /*p*/,COLOR_abstractmetamodel___MMConcreteProperty___need_super))( variable7 /*p*/) /*MMSrcMethod::need_super*/;
+    /* Register variable[10]: Result */
+    variable[10] = TAG_Bool(( variable[8] /*p*/==NIT_NULL) || VAL_ISA( variable[8] /*p*/, COLOR_MMSrcMethod, ID_MMSrcMethod)) /*cast MMSrcMethod*/;
+    /* Ensure var variable[10]: Left 'and' operand*/
+    if (UNTAG_Bool(variable[10])) { /* and */
+      /* Register variable[10]: Result */
+      variable[10] = CALL_abstractmetamodel___MMLocalProperty___need_super( variable[8] /*p*/)( variable[8] /*p*/) /*MMLocalProperty::need_super*/;
     }
-    variable9 = variable10;
-    if (UNTAG_Bool(variable9)) { /*if*/
-      variable9 = NEW_compiling_global___TableEltSuperPos___init( variable7 /*p*/); /*new TableEltSuperPos*/
-      ((array___AbstractArray___add_t)CALL( variable4 /*clt*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*clt*/, variable9) /*Array::add*/;
+    /* Register variable[10]: Result */
+    if (UNTAG_Bool(variable[10])) { /*if*/
+      /* Register variable[10]: Result */
+      variable[10] = NEW_TableEltSuper_compiling_global___TableEltProp___init( variable[8] /*p*/) /*new TableEltSuper*/;
+      CALL_abstract_collection___SimpleCollection___add( variable[4] /*clt*/)( variable[4] /*clt*/, variable[10]) /*AbstractArray::add*/;
     }
-    continue_7: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable6,COLOR_abstract_collection___Iterator___next))(variable6) /*MapIterator::next*/;
-  }
-  break_7: while(0);
-  variable6 = ((compiling_base___ToolContext___attr_sim_t)CALL( variable0 /*tc*/,COLOR_compiling_base___ToolContext___attr_sim))( variable0 /*tc*/) /*ToolContext::attr_sim*/;
-  variable7 = variable6;
-  if (UNTAG_Bool(variable7)) { /* and */
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable3 /*intro_attributes*/,COLOR_abstract_collection___Collection___is_empty))( variable3 /*intro_attributes*/) /*Array::is_empty*/;
-    variable7 =  TAG_Bool(!UNTAG_Bool(variable7));
-  }
-  variable6 = variable7;
-  if (UNTAG_Bool(variable6)) { /*if*/
-    variable6 = NEW_compiling_global___TableEltBaseAttrPos___init( self); /*new TableEltBaseAttrPos*/
-    ATTR_compiling_global___MMSrcLocalClass____base_attr_pos( self) /*MMSrcLocalClass::_base_attr_pos*/ = variable6;
-    variable6 = ATTR_compiling_global___MMSrcLocalClass____base_attr_pos( self) /*MMSrcLocalClass::_base_attr_pos*/;
-    ((array___AbstractArray___add_t)CALL( variable4 /*clt*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*clt*/, variable6) /*Array::add*/;
-  } else { /*if*/
-    ((abstract_collection___IndexedCollection___append_t)CALL( variable1 /*module_table*/,COLOR_abstract_collection___IndexedCollection___append))( variable1 /*module_table*/,  variable5 /*ilt*/) /*Array::append*/;
+    continue_8: while(0);
+    CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*Iterator::next*/;
+  }
+  break_8: while(0);
+  /* Register variable[6]: Result */
+  variable[6] = CALL_abstract_collection___Collection___is_empty( variable[5] /*ilt*/)( variable[5] /*ilt*/) /*AbstractArrayRead::is_empty*/;
+  if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[6])))) { /*if*/
+    /* Register variable[6]: Local variable */
+    /* Register variable[7]: Result */
+    variable[7] = NEW_ModuleTableEltGroup_compiling_global___AbsTableElt___init() /*new ModuleTableEltGroup*/;
+    variable[6] = variable[7];
+    /* Register variable[7]: Result */
+    variable[7] = CALL_compiling_global___ModuleTableEltGroup___elements( variable[6] /*teg*/)( variable[6] /*teg*/) /*ModuleTableEltGroup::elements*/;
+    CALL_abstract_collection___IndexedCollection___append(variable[7])(variable[7],  variable[5] /*ilt*/) /*IndexedCollection::append*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[2] /*module_table*/)( variable[2] /*module_table*/,  variable[6] /*teg*/) /*AbstractArray::add*/;
   }
-  ((abstract_collection___IndexedCollection___append_t)CALL( variable1 /*module_table*/,COLOR_abstract_collection___IndexedCollection___append))( variable1 /*module_table*/,  variable4 /*clt*/) /*Array::append*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_abstract_collection___Collection___is_empty( variable[4] /*clt*/)( variable[4] /*clt*/) /*AbstractArrayRead::is_empty*/;
+  if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[6])))) { /*if*/
+    /* Register variable[6]: Local variable */
+    /* Register variable[7]: Result */
+    variable[7] = NEW_ModuleTableEltGroup_compiling_global___AbsTableElt___init() /*new ModuleTableEltGroup*/;
+    variable[6] = variable[7];
+    /* Register variable[7]: Result */
+    variable[7] = CALL_compiling_global___ModuleTableEltGroup___elements( variable[6] /*teg*/)( variable[6] /*teg*/) /*ModuleTableEltGroup::elements*/;
+    CALL_abstract_collection___IndexedCollection___append(variable[7])(variable[7],  variable[4] /*clt*/) /*IndexedCollection::append*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[2] /*module_table*/)( variable[2] /*module_table*/,  variable[6] /*teg*/) /*AbstractArray::add*/;
+  }
+  return_label7: while(false);
   tracehead = trace.prev;
   return;
 }
 void compiling_global___MMSrcModule___local_analysis(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::MMSrcModule::local_analysis (src/compiling//compiling_global.nit:168,2--174:27)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-    val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable2 = NEW_array___Array___init(); /*new Array[LocalTableElt]*/
-  variable1 = variable2;
-  ATTR_compiling_global___MMSrcModule____local_table( self) /*MMSrcModule::_local_table*/ =  variable1 /*lt*/;
-  variable2 = ((syntax_base___MMSrcModule___src_local_classes_t)CALL( self,COLOR_syntax_base___MMSrcModule___src_local_classes))( self) /*MMSrcModule::src_local_classes*/;
-  variable2 = ((abstract_collection___Map___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Map::iterator*/;
+  struct trace_t trace = {NULL, NULL, 160, LOCATE_compiling_global___MMSrcModule___local_analysis};
+  val_t variable[7];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = CALL_syntax_base___MMSrcModule___src_local_classes(variable[0])(variable[0]) /*MMSrcModule::src_local_classes*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*MapRead::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*MapIterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*MapIterator::item*/;
-    ((compiling_global___MMSrcLocalClass___build_layout_in_t)CALL( variable3 /*c*/,COLOR_compiling_global___MMSrcLocalClass___build_layout_in))( variable3 /*c*/,  variable0 /*tc*/,  variable1 /*lt*/) /*MMSrcLocalClass::build_layout_in*/;
-    continue_9: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*MapIterator::next*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    /* Register variable[6]: Result */
+    variable[6] = ATTR_compiling_global___MMSrcModule____local_table(variable[0]) /*MMSrcModule::_local_table*/;
+    CALL_compiling_global___MMSrcLocalClass___build_layout_in( variable[5] /*c*/)( variable[5] /*c*/,  variable[1] /*tc*/, variable[6]) /*MMSrcLocalClass::build_layout_in*/;
+    continue_10: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*Iterator::next*/;
   }
-  break_9: while(0);
+  break_10: while(0);
+  return_label9: while(false);
   tracehead = trace.prev;
   return;
 }
 val_t compiling_global___MMSrcModule___global_analysis(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::MMSrcModule::global_analysis (src/compiling//compiling_global.nit:178,2--335:11)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-    val_t variable10;
-    val_t variable11;
-    val_t variable12;
-    val_t variable13;
-    val_t variable14;
-    val_t variable15;
-    val_t variable16;
-      val_t variable17;
-      val_t variable18;
-      val_t variable19;
-      val_t variable20;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable2 = NEW_compiling_global___GlobalAnalysis___init( self); /*new GlobalAnalysis*/
-  variable1 = variable2;
-  variable3 = NEW_array___Array___init(); /*new Array[MMLocalClass]*/
-  variable2 = variable3;
-  variable4 = NEW_hash___HashSet___init(); /*new HashSet[MMGlobalProperty]*/
-  variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[TableElt]*/
-  variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[TableElt]*/
-  variable5 = variable6;
-  variable6 = NEW_compiling_global___TableEltClassSelfId___init(); /*new TableEltClassSelfId*/
-  ((array___AbstractArray___add_t)CALL( variable4 /*ctab*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*ctab*/, variable6) /*Array::add*/;
-  variable6 = NEW_compiling_global___TableEltVftPointer___init(); /*new TableEltVftPointer*/
-  ((array___AbstractArray___add_t)CALL( variable5 /*itab*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*itab*/, variable6) /*Array::add*/;
-  variable7 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-  variable6 = variable7;
-  variable7 =  TAG_Int(3);
-  variable9 = NEW_array___Array___init(); /*new Array[MMLocalClass]*/
-  variable8 = variable9;
-  variable9 = ((abstractmetamodel___MMModule___local_classes_t)CALL( self,COLOR_abstractmetamodel___MMModule___local_classes))( self) /*MMSrcModule::local_classes*/;
-  variable9 = ((array___AbstractArray___iterator_t)CALL(variable9,COLOR_abstract_collection___Collection___iterator))(variable9) /*Array::iterator*/;
+  struct trace_t trace = {NULL, NULL, 168, LOCATE_compiling_global___MMSrcModule___global_analysis};
+  val_t variable[24];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = NEW_GlobalAnalysis_compiling_global___GlobalAnalysis___init(variable[0]) /*new GlobalAnalysis*/;
+  variable[3] = variable[4];
+  /* Register variable[4]: Local variable */
+  /* Register variable[5]: Result */
+  variable[5] = NEW_Array_array___Array___init() /*new Array[MMLocalClass]*/;
+  variable[4] = variable[5];
+  /* Register variable[5]: Local variable */
+  /* Register variable[6]: Result */
+  variable[6] = NEW_HashSet_hash___HashSet___init() /*new HashSet[MMGlobalProperty]*/;
+  variable[5] = variable[6];
+  /* Register variable[6]: Local variable */
+  /* Register variable[7]: Result */
+  variable[7] = NEW_Array_array___Array___init() /*new Array[TableElt]*/;
+  variable[6] = variable[7];
+  /* Register variable[7]: Local variable */
+  /* Register variable[8]: Result */
+  variable[8] = NEW_Array_array___Array___init() /*new Array[TableElt]*/;
+  variable[7] = variable[8];
+  /* Register variable[8]: Result */
+  variable[8] = NEW_TableEltClassSelfId_compiling_global___AbsTableElt___init() /*new TableEltClassSelfId*/;
+  CALL_abstract_collection___SimpleCollection___add( variable[6] /*ctab*/)( variable[6] /*ctab*/, variable[8]) /*AbstractArray::add*/;
+  /* Register variable[8]: Result */
+  variable[8] = NEW_TableEltVftPointer_compiling_global___AbsTableElt___init() /*new TableEltVftPointer*/;
+  CALL_abstract_collection___SimpleCollection___add( variable[7] /*itab*/)( variable[7] /*itab*/, variable[8]) /*AbstractArray::add*/;
+  /* Register variable[8]: Local variable */
+  /* Register variable[9]: Result */
+  variable[9] = TAG_Int(-UNTAG_Int( TAG_Int(1)));
+  variable[8] = variable[9];
+  /* Register variable[9]: Local variable */
+  variable[9] =  TAG_Int(3);
+  /* Register variable[10]: Local variable */
+  /* Register variable[11]: Result */
+  variable[11] = NEW_Array_array___Array___init() /*new Array[MMLocalClass]*/;
+  variable[10] = variable[11];
+  /* Register variable[11]: Result */
+  variable[11] = CALL_abstractmetamodel___MMModule___local_classes(variable[0])(variable[0]) /*MMModule::local_classes*/;
+  /* Register variable[11]: For iterator */
+  variable[11] = CALL_abstract_collection___Collection___iterator(variable[11])(variable[11]) /*AbstractArrayRead::iterator*/;
   while (true) { /*for*/
-    variable10 = ((array___ArrayIterator___is_ok_t)CALL(variable9,COLOR_abstract_collection___Iterator___is_ok))(variable9) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable10)) break; /*for*/
-    variable10 = ((array___ArrayIterator___item_t)CALL(variable9,COLOR_abstract_collection___Iterator___item))(variable9) /*ArrayIterator::item*/;
-    ((inheritance___MMLocalClass___compute_super_classes_t)CALL( variable10 /*c*/,COLOR_inheritance___MMLocalClass___compute_super_classes))( variable10 /*c*/) /*MMLocalClass::compute_super_classes*/;
-    ((array___AbstractArray___add_t)CALL( variable8 /*classes*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*classes*/,  variable10 /*c*/) /*Array::add*/;
-    continue_11: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable9,COLOR_abstract_collection___Iterator___next))(variable9) /*ArrayIterator::next*/;
-  }
-  break_11: while(0);
-  variable9 = NEW_compiling_global___ClassSorter___init(); /*new ClassSorter*/
-  ((sorter___AbstractSorter___sort_t)CALL(variable9,COLOR_sorter___AbstractSorter___sort))(variable9,  variable8 /*classes*/) /*ClassSorter::sort*/;
-  variable9 = ((array___AbstractArray___iterator_t)CALL( variable8 /*classes*/,COLOR_abstract_collection___Collection___iterator))( variable8 /*classes*/) /*Array::iterator*/;
+    /* Register variable[12]: For 'is_ok' result */
+    variable[12] = CALL_abstract_collection___Iterator___is_ok(variable[11])(variable[11]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[12])) break; /*for*/
+    variable[12] = CALL_abstract_collection___Iterator___item(variable[11])(variable[11]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[13]: Local variable */
+    variable[13] = variable[12];
+    CALL_inheritance___MMLocalClass___compute_super_classes( variable[13] /*c*/)( variable[13] /*c*/) /*MMLocalClass::compute_super_classes*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[10] /*classes*/)( variable[10] /*classes*/,  variable[13] /*c*/) /*AbstractArray::add*/;
+    continue_12: while(0);
+    CALL_abstract_collection___Iterator___next(variable[11])(variable[11]) /*ArrayIterator::next*/;
+  }
+  break_12: while(0);
+  /* Register variable[11]: Result */
+  variable[11] = NEW_ClassSorter_compiling_global___ClassSorter___init() /*new ClassSorter*/;
+  CALL_sorter___AbstractSorter___sort(variable[11])(variable[11],  variable[10] /*classes*/) /*AbstractSorter::sort*/;
+  /* Register variable[11]: For iterator */
+  variable[11] = CALL_abstract_collection___Collection___iterator( variable[10] /*classes*/)( variable[10] /*classes*/) /*AbstractArrayRead::iterator*/;
   while (true) { /*for*/
-    variable10 = ((array___ArrayIterator___is_ok_t)CALL(variable9,COLOR_abstract_collection___Iterator___is_ok))(variable9) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable10)) break; /*for*/
-    variable10 = ((array___ArrayIterator___item_t)CALL(variable9,COLOR_abstract_collection___Iterator___item))(variable9) /*ArrayIterator::item*/;
-    ((inheritance___MMLocalClass___compute_ancestors_t)CALL( variable10 /*c*/,COLOR_inheritance___MMLocalClass___compute_ancestors))( variable10 /*c*/) /*MMLocalClass::compute_ancestors*/;
-    ((inheritance___MMLocalClass___inherit_global_properties_t)CALL( variable10 /*c*/,COLOR_inheritance___MMLocalClass___inherit_global_properties))( variable10 /*c*/) /*MMLocalClass::inherit_global_properties*/;
-    variable12 = NEW_compiling_global___CompiledClass___init( variable10 /*c*/); /*new CompiledClass*/
-    variable11 = variable12;
-    variable12 = ((compiling_global___GlobalAnalysis___compiled_classes_t)CALL( variable1 /*ga*/,COLOR_compiling_global___GlobalAnalysis___compiled_classes))( variable1 /*ga*/) /*GlobalAnalysis::compiled_classes*/;
-    variable13 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable10 /*c*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable10 /*c*/) /*MMLocalClass::global*/;
-    ((hash___HashMap_____braeq_t)CALL(variable12,COLOR_abstract_collection___Map_____braeq))(variable12, variable13,  variable11 /*cc*/) /*HashMap::[]=*/;
-    variable13 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable10 /*c*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable10 /*c*/) /*MMLocalClass::global*/;
-    variable12 = variable13;
-    variable14 = ((abstractmetamodel___MMGlobalClass___module_t)CALL( variable12 /*gc*/,COLOR_abstractmetamodel___MMGlobalClass___module))( variable12 /*gc*/) /*MMGlobalClass::module*/;
-    variable13 = variable14;
-    variable14 = ((compiling_base___MMLocalClass___primitive_info_t)CALL( variable10 /*c*/,COLOR_compiling_base___MMLocalClass___primitive_info))( variable10 /*c*/) /*MMLocalClass::primitive_info*/;
-    variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable14 ==  NIT_NULL /*null*/) || ((variable14 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable14,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable14, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable14,COLOR_kernel___Object_____eqeq))(variable14,  NIT_NULL /*null*/) /*PrimitiveInfo::==*/)))))));
-    if (UNTAG_Bool(variable14)) { /*if*/
-      ((compiling_global___CompiledClass___id__eq_t)CALL( variable11 /*cc*/,COLOR_compiling_global___CompiledClass___id__eq))( variable11 /*cc*/,  variable6 /*pclassid*/) /*CompiledClass::id=*/;
-      variable14 = TAG_Int(UNTAG_Int( variable6 /*pclassid*/)-UNTAG_Int( TAG_Int(4)));
-      variable6 = variable14 /*pclassid=*/;
+    /* Register variable[12]: For 'is_ok' result */
+    variable[12] = CALL_abstract_collection___Iterator___is_ok(variable[11])(variable[11]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[12])) break; /*for*/
+    variable[12] = CALL_abstract_collection___Iterator___item(variable[11])(variable[11]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[13]: Local variable */
+    variable[13] = variable[12];
+    CALL_inheritance___MMLocalClass___compute_ancestors( variable[13] /*c*/)( variable[13] /*c*/) /*MMLocalClass::compute_ancestors*/;
+    CALL_inheritance___MMLocalClass___inherit_global_properties( variable[13] /*c*/)( variable[13] /*c*/) /*MMLocalClass::inherit_global_properties*/;
+    /* Register variable[14]: Local variable */
+    /* Register variable[15]: Result */
+    variable[15] = NEW_CompiledClass_compiling_global___CompiledClass___init( variable[13] /*c*/) /*new CompiledClass*/;
+    variable[14] = variable[15];
+    /* Register variable[15]: Result */
+    variable[15] = CALL_compiling_global___GlobalAnalysis___compiled_classes( variable[3] /*ga*/)( variable[3] /*ga*/) /*GlobalAnalysis::compiled_classes*/;
+    /* Register variable[16]: Result */
+    variable[16] = CALL_abstractmetamodel___MMLocalClass___global( variable[13] /*c*/)( variable[13] /*c*/) /*MMLocalClass::global*/;
+    CALL_abstract_collection___Map_____braeq(variable[15])(variable[15], variable[16],  variable[14] /*cc*/) /*HashMap::[]=*/;
+    /* Register variable[15]: Local variable */
+    /* Register variable[16]: Result */
+    variable[16] = CALL_abstractmetamodel___MMLocalClass___global( variable[13] /*c*/)( variable[13] /*c*/) /*MMLocalClass::global*/;
+    variable[15] = variable[16];
+    /* Register variable[16]: Local variable */
+    /* Register variable[17]: Result */
+    variable[17] = CALL_abstractmetamodel___MMGlobalClass___module( variable[15] /*gc*/)( variable[15] /*gc*/) /*MMGlobalClass::module*/;
+    variable[16] = variable[17];
+    /* Register variable[17]: Result */
+    variable[17] = CALL_compiling_base___MMLocalClass___primitive_info( variable[13] /*c*/)( variable[13] /*c*/) /*MMLocalClass::primitive_info*/;
+    /* Register variable[17]: Result */
+    variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[17] ==  NIT_NULL /*null*/) || ((variable[17] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[17])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[17], NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[17])(variable[17],  NIT_NULL /*null*/) /*Object::==*/)))))));
+    if (UNTAG_Bool(variable[17])) { /*if*/
+      CALL_compiling_global___CompiledClass___id__eq( variable[14] /*cc*/)( variable[14] /*cc*/,  variable[8] /*pclassid*/) /*CompiledClass::id=*/;
+      /* Register variable[17]: Result */
+      variable[17] = TAG_Int(UNTAG_Int( variable[8] /*pclassid*/)-UNTAG_Int( TAG_Int(4)));
+      variable[8] = variable[17] /*pclassid=*/;
     } else { /*if*/
-      ((compiling_global___CompiledClass___id__eq_t)CALL( variable11 /*cc*/,COLOR_compiling_global___CompiledClass___id__eq))( variable11 /*cc*/,  variable7 /*classid*/) /*CompiledClass::id=*/;
-      variable14 = TAG_Int(UNTAG_Int( variable7 /*classid*/)+UNTAG_Int( TAG_Int(4)));
-      variable7 = variable14 /*classid=*/;
+      CALL_compiling_global___CompiledClass___id__eq( variable[14] /*cc*/)( variable[14] /*cc*/,  variable[9] /*classid*/) /*CompiledClass::id=*/;
+      /* Register variable[17]: Result */
+      variable[17] = TAG_Int(UNTAG_Int( variable[9] /*classid*/)+UNTAG_Int( TAG_Int(4)));
+      variable[9] = variable[17] /*classid=*/;
     }
-    variable14 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( variable10 /*c*/,COLOR_abstractmetamodel___MMLocalClass___cshe))( variable10 /*c*/) /*MMLocalClass::cshe*/;
-    variable14 = ((partial_order___PartialOrderElement___direct_smallers_t)CALL(variable14,COLOR_partial_order___PartialOrderElement___direct_smallers))(variable14) /*PartialOrderElement::direct_smallers*/;
-    variable14 = ((array___AbstractArray___is_empty_t)CALL(variable14,COLOR_abstract_collection___Collection___is_empty))(variable14) /*Array::is_empty*/;
-    if (UNTAG_Bool(variable14)) { /*if*/
-      ((array___AbstractArray___add_t)CALL( variable2 /*smallest_classes*/,COLOR_abstract_collection___SimpleCollection___add))( variable2 /*smallest_classes*/,  variable10 /*c*/) /*Array::add*/;
+    /* Register variable[17]: Result */
+    variable[17] = CALL_abstractmetamodel___MMLocalClass___cshe( variable[13] /*c*/)( variable[13] /*c*/) /*MMLocalClass::cshe*/;
+    /* Register variable[17]: Result */
+    variable[17] = CALL_partial_order___PartialOrderElement___direct_smallers(variable[17])(variable[17]) /*PartialOrderElement::direct_smallers*/;
+    /* Register variable[17]: Result */
+    variable[17] = CALL_abstract_collection___Collection___is_empty(variable[17])(variable[17]) /*AbstractArrayRead::is_empty*/;
+    if (UNTAG_Bool(variable[17])) { /*if*/
+      CALL_abstract_collection___SimpleCollection___add( variable[4] /*smallest_classes*/)( variable[4] /*smallest_classes*/,  variable[13] /*c*/) /*AbstractArray::add*/;
     }
-    variable15 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable10 /*c*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable10 /*c*/) /*MMLocalClass::global*/;
-    variable15 = ((abstractmetamodel___MMGlobalClass___intro_t)CALL(variable15,COLOR_abstractmetamodel___MMGlobalClass___intro))(variable15) /*MMGlobalClass::intro*/;
-    variable14 = variable15;
-    variable15 = TAG_Bool(( variable14 /*bc*/==NIT_NULL) || VAL_ISA( variable14 /*bc*/, COLOR_MMSrcLocalClass, ID_MMSrcLocalClass)) /*cast MMSrcLocalClass*/;
-    if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert failed: src/compiling//compiling_global.nit:230,4--32\n"); nit_exit(1);}
-    variable15 = ((compiling_global___MMSrcLocalClass___class_color_pos_t)CALL( variable14 /*bc*/,COLOR_compiling_global___MMSrcLocalClass___class_color_pos))( variable14 /*bc*/) /*MMSrcLocalClass::class_color_pos*/;
-    ((array___AbstractArray___add_t)CALL( variable4 /*ctab*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*ctab*/, variable15) /*Array::add*/;
-    continue_12: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable9,COLOR_abstract_collection___Iterator___next))(variable9) /*ArrayIterator::next*/;
+    /* Register variable[17]: Local variable */
+    /* Register variable[18]: Result */
+    variable[18] = CALL_abstractmetamodel___MMLocalClass___global( variable[13] /*c*/)( variable[13] /*c*/) /*MMLocalClass::global*/;
+    /* Register variable[18]: Result */
+    variable[18] = CALL_abstractmetamodel___MMGlobalClass___intro(variable[18])(variable[18]) /*MMGlobalClass::intro*/;
+    variable[17] = variable[18];
+    /* Register variable[18]: Result */
+    variable[18] = TAG_Bool(( variable[17] /*bc*/==NIT_NULL) || VAL_ISA( variable[17] /*bc*/, COLOR_MMSrcLocalClass, ID_MMSrcLocalClass)) /*cast MMSrcLocalClass*/;
+    if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_compiling_global___MMSrcModule___global_analysis, LOCATE_compiling_global, 220); nit_exit(1);}
+    /* Register variable[18]: Result */
+    variable[18] = CALL_compiling_global___MMSrcLocalClass___class_color_pos( variable[17] /*bc*/)( variable[17] /*bc*/) /*MMSrcLocalClass::class_color_pos*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[6] /*ctab*/)( variable[6] /*ctab*/, variable[18]) /*AbstractArray::add*/;
+    continue_13: while(0);
+    CALL_abstract_collection___Iterator___next(variable[11])(variable[11]) /*ArrayIterator::next*/;
   }
-  break_12: while(0);
-  variable10 = NEW_hash___HashSet___init(); /*new HashSet[MMLocalClass]*/
-  variable9 = variable10;
-  variable11 = NEW_hash___HashSet___init(); /*new HashSet[MMLocalClass]*/
-  variable10 = variable11;
-  variable11 = ((array___AbstractArray___iterator_t)CALL( variable2 /*smallest_classes*/,COLOR_abstract_collection___Collection___iterator))( variable2 /*smallest_classes*/) /*Array::iterator*/;
+  break_13: while(0);
+  /* Register variable[11]: Local variable */
+  /* Register variable[12]: Result */
+  variable[12] = NEW_HashSet_hash___HashSet___init() /*new HashSet[MMLocalClass]*/;
+  variable[11] = variable[12];
+  /* Register variable[12]: Local variable */
+  /* Register variable[13]: Result */
+  variable[13] = NEW_HashSet_hash___HashSet___init() /*new HashSet[MMLocalClass]*/;
+  variable[12] = variable[13];
+  /* Register variable[13]: For iterator */
+  variable[13] = CALL_abstract_collection___Collection___iterator( variable[4] /*smallest_classes*/)( variable[4] /*smallest_classes*/) /*AbstractArrayRead::iterator*/;
   while (true) { /*for*/
-    variable12 = ((array___ArrayIterator___is_ok_t)CALL(variable11,COLOR_abstract_collection___Iterator___is_ok))(variable11) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable12)) break; /*for*/
-    variable12 = ((array___ArrayIterator___item_t)CALL(variable11,COLOR_abstract_collection___Iterator___item))(variable11) /*ArrayIterator::item*/;
+    /* Register variable[14]: For 'is_ok' result */
+    variable[14] = CALL_abstract_collection___Iterator___is_ok(variable[13])(variable[13]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[14])) break; /*for*/
+    variable[14] = CALL_abstract_collection___Iterator___item(variable[13])(variable[13]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[15]: Local variable */
+    variable[15] = variable[14];
     while (true) { /*while*/
-      variable13 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( variable12 /*c*/,COLOR_abstractmetamodel___MMLocalClass___cshe))( variable12 /*c*/) /*MMLocalClass::cshe*/;
-      variable13 = ((partial_order___PartialOrderElement___direct_greaters_t)CALL(variable13,COLOR_partial_order___PartialOrderElement___direct_greaters))(variable13) /*PartialOrderElement::direct_greaters*/;
-      variable13 = ((array___AbstractArray___length_t)CALL(variable13,COLOR_abstract_collection___Collection___length))(variable13) /*Array::length*/;
-      variable13 = TAG_Bool((variable13)==( TAG_Int(1)));
-      if (!UNTAG_Bool(variable13)) break; /* while*/
-      variable13 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( variable12 /*c*/,COLOR_abstractmetamodel___MMLocalClass___cshe))( variable12 /*c*/) /*MMLocalClass::cshe*/;
-      variable13 = ((partial_order___PartialOrderElement___direct_greaters_t)CALL(variable13,COLOR_partial_order___PartialOrderElement___direct_greaters))(variable13) /*PartialOrderElement::direct_greaters*/;
-      variable13 = ((abstract_collection___IndexedCollection___first_t)CALL(variable13,COLOR_abstract_collection___Collection___first))(variable13) /*Array::first*/;
-      variable12 = variable13 /*c=*/;
-      continue_14: while(0);
+      /* Register variable[16]: Result */
+      variable[16] = CALL_abstractmetamodel___MMLocalClass___cshe( variable[15] /*c*/)( variable[15] /*c*/) /*MMLocalClass::cshe*/;
+      /* Register variable[16]: Result */
+      variable[16] = CALL_partial_order___PartialOrderElement___direct_greaters(variable[16])(variable[16]) /*PartialOrderElement::direct_greaters*/;
+      /* Register variable[16]: Result */
+      variable[16] = CALL_abstract_collection___Collection___length(variable[16])(variable[16]) /*AbstractArrayRead::length*/;
+      /* Register variable[16]: Result */
+      variable[16] = TAG_Bool((variable[16])==( TAG_Int(1)));
+      if (!UNTAG_Bool(variable[16])) break; /* while*/
+      /* Register variable[16]: Result */
+      variable[16] = CALL_abstractmetamodel___MMLocalClass___cshe( variable[15] /*c*/)( variable[15] /*c*/) /*MMLocalClass::cshe*/;
+      /* Register variable[16]: Result */
+      variable[16] = CALL_partial_order___PartialOrderElement___direct_greaters(variable[16])(variable[16]) /*PartialOrderElement::direct_greaters*/;
+      /* Register variable[16]: Result */
+      variable[16] = CALL_abstract_collection___Collection___first(variable[16])(variable[16]) /*IndexedCollectionRead::first*/;
+      variable[15] = variable[16] /*c=*/;
+      continue_15: while(0);
     }
-    break_14: while(0);
-    ((hash___HashSet___add_t)CALL( variable9 /*crown_classes*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*crown_classes*/,  variable12 /*c*/) /*HashSet::add*/;
-    variable13 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( variable12 /*c*/,COLOR_abstractmetamodel___MMLocalClass___cshe))( variable12 /*c*/) /*MMLocalClass::cshe*/;
-    variable13 = ((partial_order___PartialOrderElement___greaters_and_self_t)CALL(variable13,COLOR_partial_order___PartialOrderElement___greaters_and_self))(variable13) /*PartialOrderElement::greaters_and_self*/;
-    ((abstract_collection___SimpleCollection___add_all_t)CALL( variable10 /*core_classes*/,COLOR_abstract_collection___SimpleCollection___add_all))( variable10 /*core_classes*/, variable13) /*HashSet::add_all*/;
-    continue_13: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable11,COLOR_abstract_collection___Iterator___next))(variable11) /*ArrayIterator::next*/;
+    break_15: while(0);
+    CALL_abstract_collection___SimpleCollection___add( variable[11] /*crown_classes*/)( variable[11] /*crown_classes*/,  variable[15] /*c*/) /*HashSet::add*/;
+    /* Register variable[16]: Result */
+    variable[16] = CALL_abstractmetamodel___MMLocalClass___cshe( variable[15] /*c*/)( variable[15] /*c*/) /*MMLocalClass::cshe*/;
+    /* Register variable[16]: Result */
+    variable[16] = CALL_partial_order___PartialOrderElement___greaters_and_self(variable[16])(variable[16]) /*PartialOrderElement::greaters_and_self*/;
+    CALL_abstract_collection___SimpleCollection___add_all( variable[12] /*core_classes*/)( variable[12] /*core_classes*/, variable[16]) /*SimpleCollection::add_all*/;
+    continue_14: while(0);
+    CALL_abstract_collection___Iterator___next(variable[13])(variable[13]) /*ArrayIterator::next*/;
   }
-  break_13: while(0);
-  ((compiling_global___MMSrcModule___colorize_t)CALL( self,COLOR_compiling_global___MMSrcModule___colorize))( self,  variable1 /*ga*/,  variable4 /*ctab*/,  variable9 /*crown_classes*/,  TAG_Int(0)) /*MMSrcModule::colorize*/;
-  variable11 =  TAG_Int(0);
-  variable12 = ((array___AbstractArray___iterator_t)CALL( variable8 /*classes*/,COLOR_abstract_collection___Collection___iterator))( variable8 /*classes*/) /*Array::iterator*/;
+  break_14: while(0);
+  CALL_compiling_global___MMSrcModule___colorize(variable[0])(variable[0],  variable[3] /*ga*/,  variable[6] /*ctab*/,  variable[11] /*crown_classes*/,  TAG_Int(0)) /*MMSrcModule::colorize*/;
+  /* Register variable[13]: Local variable */
+  variable[13] =  TAG_Int(0);
+  /* Register variable[14]: For iterator */
+  variable[14] = CALL_abstract_collection___Collection___iterator( variable[10] /*classes*/)( variable[10] /*classes*/) /*AbstractArrayRead::iterator*/;
   while (true) { /*for*/
-    variable13 = ((array___ArrayIterator___is_ok_t)CALL(variable12,COLOR_abstract_collection___Iterator___is_ok))(variable12) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable13)) break; /*for*/
-    variable13 = ((array___ArrayIterator___item_t)CALL(variable12,COLOR_abstract_collection___Iterator___item))(variable12) /*ArrayIterator::item*/;
-    variable15 = ((compiling_global___GlobalAnalysis___compiled_classes_t)CALL( variable1 /*ga*/,COLOR_compiling_global___GlobalAnalysis___compiled_classes))( variable1 /*ga*/) /*GlobalAnalysis::compiled_classes*/;
-    variable16 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable13 /*c*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable13 /*c*/) /*MMLocalClass::global*/;
-    variable15 = ((abstract_collection___CoupleMap_____bra_t)CALL(variable15,COLOR_abstract_collection___Map_____bra))(variable15, variable16) /*HashMap::[]*/;
-    variable14 = variable15;
-    variable15 = ((hash___HashSet___has_t)CALL( variable10 /*core_classes*/,COLOR_abstract_collection___Collection___has))( variable10 /*core_classes*/,  variable13 /*c*/) /*HashSet::has*/;
-    if (UNTAG_Bool(variable15)) { /*if*/
-      variable15 = ((compiling_global___MMSrcModule___build_tables_t)CALL( self,COLOR_compiling_global___MMSrcModule___build_tables))( self,  variable1 /*ga*/,  variable13 /*c*/,  variable4 /*ctab*/) /*MMSrcModule::build_tables*/;
-      ((compiling_global___CompiledClass___class_table__eq_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___class_table__eq))( variable14 /*cc*/, variable15) /*CompiledClass::class_table=*/;
-      variable15 = ((compiling_global___CompiledClass___class_table_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___class_table))( variable14 /*cc*/) /*CompiledClass::class_table*/;
-      variable15 = ((array___AbstractArray___length_t)CALL(variable15,COLOR_abstract_collection___Collection___length))(variable15) /*Array::length*/;
-      variable15 = TAG_Bool(UNTAG_Int( variable11 /*maxcolor*/)<UNTAG_Int(variable15));
-      if (UNTAG_Bool(variable15)) { /*if*/
-        variable15 = ((compiling_global___CompiledClass___class_table_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___class_table))( variable14 /*cc*/) /*CompiledClass::class_table*/;
-        variable15 = ((array___AbstractArray___length_t)CALL(variable15,COLOR_abstract_collection___Collection___length))(variable15) /*Array::length*/;
-        variable11 = variable15 /*maxcolor=*/;
+    /* Register variable[15]: For 'is_ok' result */
+    variable[15] = CALL_abstract_collection___Iterator___is_ok(variable[14])(variable[14]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[15])) break; /*for*/
+    variable[15] = CALL_abstract_collection___Iterator___item(variable[14])(variable[14]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[16]: Local variable */
+    variable[16] = variable[15];
+    /* Register variable[17]: Local variable */
+    /* Register variable[18]: Result */
+    variable[18] = CALL_compiling_global___GlobalAnalysis___compiled_classes( variable[3] /*ga*/)( variable[3] /*ga*/) /*GlobalAnalysis::compiled_classes*/;
+    /* Register variable[19]: Result */
+    variable[19] = CALL_abstractmetamodel___MMLocalClass___global( variable[16] /*c*/)( variable[16] /*c*/) /*MMLocalClass::global*/;
+    /* Register variable[18]: Result */
+    variable[18] = CALL_abstract_collection___MapRead_____bra(variable[18])(variable[18], variable[19]) /*CoupleMap::[]*/;
+    variable[17] = variable[18];
+    /* Register variable[18]: Result */
+    variable[18] = CALL_abstract_collection___Collection___has( variable[12] /*core_classes*/)( variable[12] /*core_classes*/,  variable[16] /*c*/) /*HashSet::has*/;
+    if (UNTAG_Bool(variable[18])) { /*if*/
+      /* Register variable[18]: Result */
+      variable[18] = CALL_compiling_global___CompiledClass___class_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::class_table*/;
+      CALL_compiling_global___MMSrcModule___build_tables_in(variable[0])(variable[0], variable[18],  variable[3] /*ga*/,  variable[16] /*c*/,  variable[6] /*ctab*/) /*MMSrcModule::build_tables_in*/;
+      /* Register variable[18]: Result */
+      variable[18] = CALL_compiling_global___CompiledClass___class_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::class_table*/;
+      /* Register variable[18]: Result */
+      variable[18] = CALL_abstract_collection___Collection___length(variable[18])(variable[18]) /*AbstractArrayRead::length*/;
+      /* Register variable[18]: Result */
+      variable[18] = TAG_Bool(UNTAG_Int( variable[13] /*maxcolor*/)<UNTAG_Int(variable[18]));
+      if (UNTAG_Bool(variable[18])) { /*if*/
+        /* Register variable[18]: Result */
+        variable[18] = CALL_compiling_global___CompiledClass___class_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::class_table*/;
+        /* Register variable[18]: Result */
+        variable[18] = CALL_abstract_collection___Collection___length(variable[18])(variable[18]) /*AbstractArrayRead::length*/;
+        variable[13] = variable[18] /*maxcolor=*/;
       }
     } else { /*if*/
-      variable16 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( variable13 /*c*/,COLOR_abstractmetamodel___MMLocalClass___cshe))( variable13 /*c*/) /*MMLocalClass::cshe*/;
-      variable16 = ((partial_order___PartialOrderElement___direct_greaters_t)CALL(variable16,COLOR_partial_order___PartialOrderElement___direct_greaters))(variable16) /*PartialOrderElement::direct_greaters*/;
-      variable16 = ((abstract_collection___IndexedCollection___first_t)CALL(variable16,COLOR_abstract_collection___Collection___first))(variable16) /*Array::first*/;
-      variable15 = variable16;
-      variable17 = ((compiling_global___GlobalAnalysis___compiled_classes_t)CALL( variable1 /*ga*/,COLOR_compiling_global___GlobalAnalysis___compiled_classes))( variable1 /*ga*/) /*GlobalAnalysis::compiled_classes*/;
-      variable18 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable15 /*sc*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable15 /*sc*/) /*MMLocalClass::global*/;
-      variable17 = ((abstract_collection___CoupleMap_____bra_t)CALL(variable17,COLOR_abstract_collection___Map_____bra))(variable17, variable18) /*HashMap::[]*/;
-      variable16 = variable17;
-      variable17 = ((compiling_global___CompiledClass___class_table_t)CALL( variable16 /*scc*/,COLOR_compiling_global___CompiledClass___class_table))( variable16 /*scc*/) /*CompiledClass::class_table*/;
-      variable17 = ((array___Collection___to_a_t)CALL(variable17,COLOR_array___Collection___to_a))(variable17) /*Array::to_a*/;
-      ((compiling_global___CompiledClass___class_table__eq_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___class_table__eq))( variable14 /*cc*/, variable17) /*CompiledClass::class_table=*/;
-      variable18 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable13 /*c*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable13 /*c*/) /*MMLocalClass::global*/;
-      variable18 = ((abstractmetamodel___MMGlobalClass___intro_t)CALL(variable18,COLOR_abstractmetamodel___MMGlobalClass___intro))(variable18) /*MMGlobalClass::intro*/;
-      variable17 = variable18;
-      variable18 = TAG_Bool(( variable17 /*bc*/==NIT_NULL) || VAL_ISA( variable17 /*bc*/, COLOR_MMSrcLocalClass, ID_MMSrcLocalClass)) /*cast MMSrcLocalClass*/;
-      if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert failed: src/compiling//compiling_global.nit:263,5--33\n"); nit_exit(1);}
-      variable19 = ((compiling_global___MMSrcLocalClass___class_color_pos_t)CALL( variable17 /*bc*/,COLOR_compiling_global___MMSrcLocalClass___class_color_pos))( variable17 /*bc*/) /*MMSrcLocalClass::class_color_pos*/;
-      variable18 = variable19;
-      variable20 = ((compiling_global___CompiledClass___class_table_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___class_table))( variable14 /*cc*/) /*CompiledClass::class_table*/;
-      variable20 = ((array___AbstractArray___length_t)CALL(variable20,COLOR_abstract_collection___Collection___length))(variable20) /*Array::length*/;
-      variable19 = variable20;
-      ((compiling_global___ColorContext___color__eq_t)CALL( variable1 /*ga*/,COLOR_compiling_global___ColorContext___color__eq))( variable1 /*ga*/,  variable18 /*colpos*/,  variable19 /*colposcolor*/) /*GlobalAnalysis::color=*/;
-      variable20 = ((compiling_global___CompiledClass___class_table_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___class_table))( variable14 /*cc*/) /*CompiledClass::class_table*/;
-      ((array___AbstractArray___add_t)CALL(variable20,COLOR_abstract_collection___SimpleCollection___add))(variable20,  variable18 /*colpos*/) /*Array::add*/;
-      variable20 = TAG_Bool(UNTAG_Int( variable11 /*maxcolor*/)<UNTAG_Int( variable19 /*colposcolor*/));
-      if (UNTAG_Bool(variable20)) { /*if*/
-        variable11 =  variable19 /*colposcolor*/ /*maxcolor=*/;
+      /* Register variable[18]: Local variable */
+      /* Register variable[19]: Result */
+      variable[19] = CALL_abstractmetamodel___MMLocalClass___cshe( variable[16] /*c*/)( variable[16] /*c*/) /*MMLocalClass::cshe*/;
+      /* Register variable[19]: Result */
+      variable[19] = CALL_partial_order___PartialOrderElement___direct_greaters(variable[19])(variable[19]) /*PartialOrderElement::direct_greaters*/;
+      /* Register variable[19]: Result */
+      variable[19] = CALL_abstract_collection___Collection___first(variable[19])(variable[19]) /*IndexedCollectionRead::first*/;
+      variable[18] = variable[19];
+      /* Register variable[19]: Local variable */
+      /* Register variable[20]: Result */
+      variable[20] = CALL_compiling_global___GlobalAnalysis___compiled_classes( variable[3] /*ga*/)( variable[3] /*ga*/) /*GlobalAnalysis::compiled_classes*/;
+      /* Register variable[21]: Result */
+      variable[21] = CALL_abstractmetamodel___MMLocalClass___global( variable[18] /*sc*/)( variable[18] /*sc*/) /*MMLocalClass::global*/;
+      /* Register variable[20]: Result */
+      variable[20] = CALL_abstract_collection___MapRead_____bra(variable[20])(variable[20], variable[21]) /*CoupleMap::[]*/;
+      variable[19] = variable[20];
+      /* Register variable[20]: Result */
+      variable[20] = CALL_compiling_global___CompiledClass___class_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::class_table*/;
+      /* Register variable[20]: Result */
+      variable[20] = CALL_abstract_collection___Collection___is_empty(variable[20])(variable[20]) /*AbstractArrayRead::is_empty*/;
+      if (!UNTAG_Bool(variable[20])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_compiling_global___MMSrcModule___global_analysis, LOCATE_compiling_global, 251); nit_exit(1);}
+      /* Register variable[20]: Result */
+      variable[20] = CALL_compiling_global___CompiledClass___class_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::class_table*/;
+      /* Register variable[21]: Result */
+      variable[21] = CALL_compiling_global___CompiledClass___class_table( variable[19] /*scc*/)( variable[19] /*scc*/) /*CompiledClass::class_table*/;
+      CALL_abstract_collection___SimpleCollection___add_all(variable[20])(variable[20], variable[21]) /*SimpleCollection::add_all*/;
+      /* Register variable[20]: Local variable */
+      /* Register variable[21]: Result */
+      variable[21] = CALL_abstractmetamodel___MMLocalClass___global( variable[16] /*c*/)( variable[16] /*c*/) /*MMLocalClass::global*/;
+      /* Register variable[21]: Result */
+      variable[21] = CALL_abstractmetamodel___MMGlobalClass___intro(variable[21])(variable[21]) /*MMGlobalClass::intro*/;
+      variable[20] = variable[21];
+      /* Register variable[21]: Result */
+      variable[21] = TAG_Bool(( variable[20] /*bc*/==NIT_NULL) || VAL_ISA( variable[20] /*bc*/, COLOR_MMSrcLocalClass, ID_MMSrcLocalClass)) /*cast MMSrcLocalClass*/;
+      if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_compiling_global___MMSrcModule___global_analysis, LOCATE_compiling_global, 254); nit_exit(1);}
+      /* Register variable[21]: Local variable */
+      /* Register variable[22]: Result */
+      variable[22] = CALL_compiling_global___MMSrcLocalClass___class_color_pos( variable[20] /*bc*/)( variable[20] /*bc*/) /*MMSrcLocalClass::class_color_pos*/;
+      variable[21] = variable[22];
+      /* Register variable[22]: Local variable */
+      /* Register variable[23]: Result */
+      variable[23] = CALL_compiling_global___CompiledClass___class_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::class_table*/;
+      /* Register variable[23]: Result */
+      variable[23] = CALL_abstract_collection___Collection___length(variable[23])(variable[23]) /*AbstractArrayRead::length*/;
+      variable[22] = variable[23];
+      CALL_compiling_global___ColorContext___color__eq( variable[3] /*ga*/)( variable[3] /*ga*/,  variable[21] /*colpos*/,  variable[22] /*colposcolor*/) /*ColorContext::color=*/;
+      /* Register variable[23]: Result */
+      variable[23] = CALL_compiling_global___CompiledClass___class_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::class_table*/;
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23],  variable[21] /*colpos*/) /*AbstractArray::add*/;
+      /* Register variable[23]: Result */
+      variable[23] = TAG_Bool(UNTAG_Int( variable[13] /*maxcolor*/)<UNTAG_Int( variable[22] /*colposcolor*/));
+      if (UNTAG_Bool(variable[23])) { /*if*/
+        variable[13] =  variable[22] /*colposcolor*/ /*maxcolor=*/;
       }
     }
-    continue_15: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable12,COLOR_abstract_collection___Iterator___next))(variable12) /*ArrayIterator::next*/;
+    continue_16: while(0);
+    CALL_abstract_collection___Iterator___next(variable[14])(variable[14]) /*ArrayIterator::next*/;
   }
-  break_15: while(0);
-  variable12 = TAG_Int(UNTAG_Int( variable11 /*maxcolor*/)+UNTAG_Int( TAG_Int(1)));
-  ((compiling_global___GlobalAnalysis___max_class_table_length__eq_t)CALL( variable1 /*ga*/,COLOR_compiling_global___GlobalAnalysis___max_class_table_length__eq))( variable1 /*ga*/, variable12) /*GlobalAnalysis::max_class_table_length=*/;
-  variable12 = ((array___AbstractArray___iterator_t)CALL( variable8 /*classes*/,COLOR_abstract_collection___Collection___iterator))( variable8 /*classes*/) /*Array::iterator*/;
+  break_16: while(0);
+  /* Register variable[14]: Result */
+  variable[14] = TAG_Int(UNTAG_Int( variable[13] /*maxcolor*/)+UNTAG_Int( TAG_Int(1)));
+  CALL_compiling_global___GlobalAnalysis___max_class_table_length__eq( variable[3] /*ga*/)( variable[3] /*ga*/, variable[14]) /*GlobalAnalysis::max_class_table_length=*/;
+  /* Register variable[14]: For iterator */
+  variable[14] = CALL_abstract_collection___Collection___iterator( variable[10] /*classes*/)( variable[10] /*classes*/) /*AbstractArrayRead::iterator*/;
   while (true) { /*for*/
-    variable13 = ((array___ArrayIterator___is_ok_t)CALL(variable12,COLOR_abstract_collection___Iterator___is_ok))(variable12) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable13)) break; /*for*/
-    variable13 = ((array___ArrayIterator___item_t)CALL(variable12,COLOR_abstract_collection___Iterator___item))(variable12) /*ArrayIterator::item*/;
-    variable15 = ((compiling_global___GlobalAnalysis___compiled_classes_t)CALL( variable1 /*ga*/,COLOR_compiling_global___GlobalAnalysis___compiled_classes))( variable1 /*ga*/) /*GlobalAnalysis::compiled_classes*/;
-    variable16 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable13 /*c*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable13 /*c*/) /*MMLocalClass::global*/;
-    variable15 = ((abstract_collection___CoupleMap_____bra_t)CALL(variable15,COLOR_abstract_collection___Map_____bra))(variable15, variable16) /*HashMap::[]*/;
-    variable14 = variable15;
-    variable16 = NEW_compiling_global___TableEltComposite___init( variable14 /*cc*/); /*new TableEltComposite*/
-    variable15 = variable16;
-    variable17 = NEW_compiling_global___TableEltComposite___init( variable14 /*cc*/); /*new TableEltComposite*/
-    variable16 = variable17;
-    variable17 = ((abstractmetamodel___MMLocalClass___crhe_t)CALL( variable13 /*c*/,COLOR_abstractmetamodel___MMLocalClass___crhe))( variable13 /*c*/) /*MMLocalClass::crhe*/;
-    variable17 = ((partial_order___PartialOrderElement___greaters_and_self_t)CALL(variable17,COLOR_partial_order___PartialOrderElement___greaters_and_self))(variable17) /*PartialOrderElement::greaters_and_self*/;
-    variable17 = ((abstract_collection___Collection___iterator_t)CALL(variable17,COLOR_abstract_collection___Collection___iterator))(variable17) /*Collection::iterator*/;
+    /* Register variable[15]: For 'is_ok' result */
+    variable[15] = CALL_abstract_collection___Iterator___is_ok(variable[14])(variable[14]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[15])) break; /*for*/
+    variable[15] = CALL_abstract_collection___Iterator___item(variable[14])(variable[14]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[16]: Local variable */
+    variable[16] = variable[15];
+    /* Register variable[17]: Local variable */
+    /* Register variable[18]: Result */
+    variable[18] = CALL_compiling_global___GlobalAnalysis___compiled_classes( variable[3] /*ga*/)( variable[3] /*ga*/) /*GlobalAnalysis::compiled_classes*/;
+    /* Register variable[19]: Result */
+    variable[19] = CALL_abstractmetamodel___MMLocalClass___global( variable[16] /*c*/)( variable[16] /*c*/) /*MMLocalClass::global*/;
+    /* Register variable[18]: Result */
+    variable[18] = CALL_abstract_collection___MapRead_____bra(variable[18])(variable[18], variable[19]) /*CoupleMap::[]*/;
+    variable[17] = variable[18];
+    /* Register variable[18]: Local variable */
+    /* Register variable[19]: Result */
+    variable[19] = CALL_compiling_global___CompiledClass___class_layout( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::class_layout*/;
+    variable[18] = variable[19];
+    /* Register variable[19]: Local variable */
+    /* Register variable[20]: Result */
+    variable[20] = CALL_compiling_global___CompiledClass___instance_layout( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::instance_layout*/;
+    variable[19] = variable[20];
+    /* Register variable[20]: Result */
+    variable[20] = CALL_abstractmetamodel___MMLocalClass___crhe( variable[16] /*c*/)( variable[16] /*c*/) /*MMLocalClass::crhe*/;
+    /* Register variable[20]: Result */
+    variable[20] = CALL_partial_order___PartialOrderElement___greaters_and_self(variable[20])(variable[20]) /*PartialOrderElement::greaters_and_self*/;
+    /* Register variable[20]: For iterator */
+    variable[20] = CALL_abstract_collection___Collection___iterator(variable[20])(variable[20]) /*Collection::iterator*/;
     while (true) { /*for*/
-      variable18 = ((abstract_collection___Iterator___is_ok_t)CALL(variable17,COLOR_abstract_collection___Iterator___is_ok))(variable17) /*Iterator::is_ok*/;
-      if (!UNTAG_Bool(variable18)) break; /*for*/
-      variable18 = ((abstract_collection___Iterator___item_t)CALL(variable17,COLOR_abstract_collection___Iterator___item))(variable17) /*Iterator::item*/;
-      variable19 = TAG_Bool(( variable18 /*sc*/==NIT_NULL) || VAL_ISA( variable18 /*sc*/, COLOR_MMSrcLocalClass, ID_MMSrcLocalClass)) /*cast MMSrcLocalClass*/;
-      if (UNTAG_Bool(variable19)) { /*if*/
-        variable19 = ((compiling_global___MMSrcLocalClass___class_layout_t)CALL( variable18 /*sc*/,COLOR_compiling_global___MMSrcLocalClass___class_layout))( variable18 /*sc*/) /*MMSrcLocalClass::class_layout*/;
-        ((compiling_global___TableEltComposite___add_t)CALL( variable15 /*cte*/,COLOR_compiling_global___TableEltComposite___add))( variable15 /*cte*/,  variable18 /*sc*/, variable19) /*TableEltComposite::add*/;
-        variable19 = ((compiling_global___MMSrcLocalClass___instance_layout_t)CALL( variable18 /*sc*/,COLOR_compiling_global___MMSrcLocalClass___instance_layout))( variable18 /*sc*/) /*MMSrcLocalClass::instance_layout*/;
-        ((compiling_global___TableEltComposite___add_t)CALL( variable16 /*ite*/,COLOR_compiling_global___TableEltComposite___add))( variable16 /*ite*/,  variable18 /*sc*/, variable19) /*TableEltComposite::add*/;
-      }
-      ((compiling_global___CompiledClass___class_layout__eq_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___class_layout__eq))( variable14 /*cc*/,  variable15 /*cte*/) /*CompiledClass::class_layout=*/;
-      ((compiling_global___CompiledClass___instance_layout__eq_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___instance_layout__eq))( variable14 /*cc*/,  variable16 /*ite*/) /*CompiledClass::instance_layout=*/;
-      continue_17: while(0);
-      ((abstract_collection___Iterator___next_t)CALL(variable17,COLOR_abstract_collection___Iterator___next))(variable17) /*Iterator::next*/;
+      /* Register variable[21]: For 'is_ok' result */
+      variable[21] = CALL_abstract_collection___Iterator___is_ok(variable[20])(variable[20]) /*Iterator::is_ok*/;
+      if (!UNTAG_Bool(variable[21])) break; /*for*/
+      variable[21] = CALL_abstract_collection___Iterator___item(variable[20])(variable[20]) /*Iterator::item*/ /* Ensure var: For item*/;
+      /* Register variable[22]: Local variable */
+      variable[22] = variable[21];
+      /* Register variable[23]: Result */
+      variable[23] = TAG_Bool(( variable[22] /*sc*/==NIT_NULL) || VAL_ISA( variable[22] /*sc*/, COLOR_MMSrcLocalClass, ID_MMSrcLocalClass)) /*cast MMSrcLocalClass*/;
+      if (UNTAG_Bool(variable[23])) { /*if*/
+        /* Register variable[23]: Result */
+        variable[23] = CALL_compiling_global___MMSrcLocalClass___class_layout( variable[22] /*sc*/)( variable[22] /*sc*/) /*MMSrcLocalClass::class_layout*/;
+        CALL_compiling_global___TableEltComposite___add( variable[18] /*cte*/)( variable[18] /*cte*/,  variable[22] /*sc*/, variable[23]) /*TableEltComposite::add*/;
+        /* Register variable[23]: Result */
+        variable[23] = CALL_compiling_global___MMSrcLocalClass___instance_layout( variable[22] /*sc*/)( variable[22] /*sc*/) /*MMSrcLocalClass::instance_layout*/;
+        CALL_compiling_global___TableEltComposite___add( variable[19] /*ite*/)( variable[19] /*ite*/,  variable[22] /*sc*/, variable[23]) /*TableEltComposite::add*/;
+      }
+      continue_18: while(0);
+      CALL_abstract_collection___Iterator___next(variable[20])(variable[20]) /*Iterator::next*/;
     }
-    break_17: while(0);
-    variable17 = ((hash___HashSet___has_t)CALL( variable10 /*core_classes*/,COLOR_abstract_collection___Collection___has))( variable10 /*core_classes*/,  variable13 /*c*/) /*HashSet::has*/;
-    if (UNTAG_Bool(variable17)) { /*if*/
-      variable17 = ((compiling_global___TableEltComposite___length_t)CALL( variable15 /*cte*/,COLOR_compiling_global___TableElt___length))( variable15 /*cte*/) /*TableEltComposite::length*/;
-      variable17 = TAG_Bool(UNTAG_Int(variable17)>UNTAG_Int( TAG_Int(0)));
-      if (UNTAG_Bool(variable17)) { /*if*/
-        ((array___AbstractArray___add_t)CALL( variable4 /*ctab*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*ctab*/,  variable15 /*cte*/) /*Array::add*/;
-      }
-      variable17 = ((compiling_base___ToolContext___attr_sim_t)CALL( variable0 /*cctx*/,COLOR_compiling_base___ToolContext___attr_sim))( variable0 /*cctx*/) /*ToolContext::attr_sim*/;
-      variable17 =  TAG_Bool(!UNTAG_Bool(variable17));
-      if (UNTAG_Bool(variable17)) { /* and */
-        variable17 = ((compiling_global___TableEltComposite___length_t)CALL( variable16 /*ite*/,COLOR_compiling_global___TableElt___length))( variable16 /*ite*/) /*TableEltComposite::length*/;
-        variable17 = TAG_Bool(UNTAG_Int(variable17)>UNTAG_Int( TAG_Int(0)));
-      }
-      if (UNTAG_Bool(variable17)) { /*if*/
-        ((array___AbstractArray___add_t)CALL( variable5 /*itab*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*itab*/,  variable16 /*ite*/) /*Array::add*/;
+    break_18: while(0);
+    /* Register variable[20]: Result */
+    variable[20] = CALL_abstract_collection___Collection___has( variable[12] /*core_classes*/)( variable[12] /*core_classes*/,  variable[16] /*c*/) /*HashSet::has*/;
+    if (UNTAG_Bool(variable[20])) { /*if*/
+      /* Register variable[20]: Result */
+      variable[20] = CALL_compiling_global___TableElt___length( variable[18] /*cte*/)( variable[18] /*cte*/) /*TableEltComposite::length*/;
+      /* Register variable[20]: Result */
+      variable[20] = TAG_Bool(UNTAG_Int(variable[20])>UNTAG_Int( TAG_Int(0)));
+      if (UNTAG_Bool(variable[20])) { /*if*/
+        CALL_abstract_collection___SimpleCollection___add( variable[6] /*ctab*/)( variable[6] /*ctab*/,  variable[18] /*cte*/) /*AbstractArray::add*/;
+      }
+      /* Register variable[20]: Result */
+      variable[20] = CALL_compiling_global___TableElt___length( variable[19] /*ite*/)( variable[19] /*ite*/) /*TableEltComposite::length*/;
+      /* Register variable[20]: Result */
+      variable[20] = TAG_Bool(UNTAG_Int(variable[20])>UNTAG_Int( TAG_Int(0)));
+      if (UNTAG_Bool(variable[20])) { /*if*/
+        CALL_abstract_collection___SimpleCollection___add( variable[7] /*itab*/)( variable[7] /*itab*/,  variable[19] /*ite*/) /*AbstractArray::add*/;
       }
     }
-    continue_16: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable12,COLOR_abstract_collection___Iterator___next))(variable12) /*ArrayIterator::next*/;
+    continue_17: while(0);
+    CALL_abstract_collection___Iterator___next(variable[14])(variable[14]) /*ArrayIterator::next*/;
   }
-  break_16: while(0);
-  variable12 = TAG_Int(UNTAG_Int( variable11 /*maxcolor*/)+UNTAG_Int( TAG_Int(1)));
-  ((compiling_global___MMSrcModule___colorize_t)CALL( self,COLOR_compiling_global___MMSrcModule___colorize))( self,  variable1 /*ga*/,  variable4 /*ctab*/,  variable9 /*crown_classes*/, variable12) /*MMSrcModule::colorize*/;
-  ((compiling_global___MMSrcModule___colorize_t)CALL( self,COLOR_compiling_global___MMSrcModule___colorize))( self,  variable1 /*ga*/,  variable5 /*itab*/,  variable9 /*crown_classes*/,  TAG_Int(0)) /*MMSrcModule::colorize*/;
-  ((compiling_global___GlobalAnalysis___max_class_table_length__eq_t)CALL( variable1 /*ga*/,COLOR_compiling_global___GlobalAnalysis___max_class_table_length__eq))( variable1 /*ga*/,  TAG_Int(0)) /*GlobalAnalysis::max_class_table_length=*/;
-  variable12 = ((array___AbstractArray___iterator_t)CALL( variable8 /*classes*/,COLOR_abstract_collection___Collection___iterator))( variable8 /*classes*/) /*Array::iterator*/;
+  break_17: while(0);
+  /* Register variable[14]: Result */
+  variable[14] = TAG_Int(UNTAG_Int( variable[13] /*maxcolor*/)+UNTAG_Int( TAG_Int(1)));
+  CALL_compiling_global___MMSrcModule___colorize(variable[0])(variable[0],  variable[3] /*ga*/,  variable[6] /*ctab*/,  variable[11] /*crown_classes*/, variable[14]) /*MMSrcModule::colorize*/;
+  CALL_compiling_global___MMSrcModule___colorize(variable[0])(variable[0],  variable[3] /*ga*/,  variable[7] /*itab*/,  variable[11] /*crown_classes*/,  TAG_Int(0)) /*MMSrcModule::colorize*/;
+  CALL_compiling_global___GlobalAnalysis___max_class_table_length__eq( variable[3] /*ga*/)( variable[3] /*ga*/,  TAG_Int(0)) /*GlobalAnalysis::max_class_table_length=*/;
+  /* Register variable[14]: For iterator */
+  variable[14] = CALL_abstract_collection___Collection___iterator( variable[10] /*classes*/)( variable[10] /*classes*/) /*AbstractArrayRead::iterator*/;
   while (true) { /*for*/
-    variable13 = ((array___ArrayIterator___is_ok_t)CALL(variable12,COLOR_abstract_collection___Iterator___is_ok))(variable12) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable13)) break; /*for*/
-    variable13 = ((array___ArrayIterator___item_t)CALL(variable12,COLOR_abstract_collection___Iterator___item))(variable12) /*ArrayIterator::item*/;
-    variable15 = ((compiling_global___GlobalAnalysis___compiled_classes_t)CALL( variable1 /*ga*/,COLOR_compiling_global___GlobalAnalysis___compiled_classes))( variable1 /*ga*/) /*GlobalAnalysis::compiled_classes*/;
-    variable16 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable13 /*c*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable13 /*c*/) /*MMLocalClass::global*/;
-    variable15 = ((abstract_collection___CoupleMap_____bra_t)CALL(variable15,COLOR_abstract_collection___Map_____bra))(variable15, variable16) /*HashMap::[]*/;
-    variable14 = variable15;
-    variable15 = ((hash___HashSet___has_t)CALL( variable10 /*core_classes*/,COLOR_abstract_collection___Collection___has))( variable10 /*core_classes*/,  variable13 /*c*/) /*HashSet::has*/;
-    if (UNTAG_Bool(variable15)) { /*if*/
-      variable15 = ((compiling_global___MMSrcModule___build_tables_t)CALL( self,COLOR_compiling_global___MMSrcModule___build_tables))( self,  variable1 /*ga*/,  variable13 /*c*/,  variable4 /*ctab*/) /*MMSrcModule::build_tables*/;
-      ((compiling_global___CompiledClass___class_table__eq_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___class_table__eq))( variable14 /*cc*/, variable15) /*CompiledClass::class_table=*/;
-      variable15 = ((compiling_global___MMSrcModule___build_tables_t)CALL( self,COLOR_compiling_global___MMSrcModule___build_tables))( self,  variable1 /*ga*/,  variable13 /*c*/,  variable5 /*itab*/) /*MMSrcModule::build_tables*/;
-      ((compiling_global___CompiledClass___instance_table__eq_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___instance_table__eq))( variable14 /*cc*/, variable15) /*CompiledClass::instance_table=*/;
+    /* Register variable[15]: For 'is_ok' result */
+    variable[15] = CALL_abstract_collection___Iterator___is_ok(variable[14])(variable[14]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[15])) break; /*for*/
+    variable[15] = CALL_abstract_collection___Iterator___item(variable[14])(variable[14]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[16]: Local variable */
+    variable[16] = variable[15];
+    /* Register variable[17]: Local variable */
+    /* Register variable[18]: Result */
+    variable[18] = CALL_compiling_global___GlobalAnalysis___compiled_classes( variable[3] /*ga*/)( variable[3] /*ga*/) /*GlobalAnalysis::compiled_classes*/;
+    /* Register variable[19]: Result */
+    variable[19] = CALL_abstractmetamodel___MMLocalClass___global( variable[16] /*c*/)( variable[16] /*c*/) /*MMLocalClass::global*/;
+    /* Register variable[18]: Result */
+    variable[18] = CALL_abstract_collection___MapRead_____bra(variable[18])(variable[18], variable[19]) /*CoupleMap::[]*/;
+    variable[17] = variable[18];
+    /* Register variable[18]: Result */
+    variable[18] = CALL_abstract_collection___Collection___has( variable[12] /*core_classes*/)( variable[12] /*core_classes*/,  variable[16] /*c*/) /*HashSet::has*/;
+    if (UNTAG_Bool(variable[18])) { /*if*/
+      /* Register variable[18]: Result */
+      variable[18] = CALL_compiling_global___CompiledClass___class_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::class_table*/;
+      CALL_compiling_global___MMSrcModule___build_tables_in(variable[0])(variable[0], variable[18],  variable[3] /*ga*/,  variable[16] /*c*/,  variable[6] /*ctab*/) /*MMSrcModule::build_tables_in*/;
+      /* Register variable[18]: Result */
+      variable[18] = CALL_compiling_global___CompiledClass___instance_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::instance_table*/;
+      CALL_compiling_global___MMSrcModule___build_tables_in(variable[0])(variable[0], variable[18],  variable[3] /*ga*/,  variable[16] /*c*/,  variable[7] /*itab*/) /*MMSrcModule::build_tables_in*/;
     } else { /*if*/
-      variable16 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( variable13 /*c*/,COLOR_abstractmetamodel___MMLocalClass___cshe))( variable13 /*c*/) /*MMLocalClass::cshe*/;
-      variable16 = ((partial_order___PartialOrderElement___direct_greaters_t)CALL(variable16,COLOR_partial_order___PartialOrderElement___direct_greaters))(variable16) /*PartialOrderElement::direct_greaters*/;
-      variable16 = ((abstract_collection___IndexedCollection___first_t)CALL(variable16,COLOR_abstract_collection___Collection___first))(variable16) /*Array::first*/;
-      variable15 = variable16;
-      variable17 = ((compiling_global___GlobalAnalysis___compiled_classes_t)CALL( variable1 /*ga*/,COLOR_compiling_global___GlobalAnalysis___compiled_classes))( variable1 /*ga*/) /*GlobalAnalysis::compiled_classes*/;
-      variable18 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable15 /*sc*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable15 /*sc*/) /*MMLocalClass::global*/;
-      variable17 = ((abstract_collection___CoupleMap_____bra_t)CALL(variable17,COLOR_abstract_collection___Map_____bra))(variable17, variable18) /*HashMap::[]*/;
-      variable16 = variable17;
-      variable17 = ((compiling_global___CompiledClass___class_table_t)CALL( variable16 /*scc*/,COLOR_compiling_global___CompiledClass___class_table))( variable16 /*scc*/) /*CompiledClass::class_table*/;
-      variable17 = ((array___Collection___to_a_t)CALL(variable17,COLOR_array___Collection___to_a))(variable17) /*Array::to_a*/;
-      ((compiling_global___CompiledClass___class_table__eq_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___class_table__eq))( variable14 /*cc*/, variable17) /*CompiledClass::class_table=*/;
-      variable18 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable13 /*c*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable13 /*c*/) /*MMLocalClass::global*/;
-      variable18 = ((abstractmetamodel___MMGlobalClass___intro_t)CALL(variable18,COLOR_abstractmetamodel___MMGlobalClass___intro))(variable18) /*MMGlobalClass::intro*/;
-      variable17 = variable18;
-      variable18 = TAG_Bool(( variable17 /*bc*/==NIT_NULL) || VAL_ISA( variable17 /*bc*/, COLOR_MMSrcLocalClass, ID_MMSrcLocalClass)) /*cast MMSrcLocalClass*/;
-      if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert failed: src/compiling//compiling_global.nit:315,5--33\n"); nit_exit(1);}
-      variable19 = ((compiling_global___MMSrcLocalClass___class_color_pos_t)CALL( variable17 /*bc*/,COLOR_compiling_global___MMSrcLocalClass___class_color_pos))( variable17 /*bc*/) /*MMSrcLocalClass::class_color_pos*/;
-      variable18 = variable19;
-      variable19 = ((compiling_global___CompiledClass___class_table_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___class_table))( variable14 /*cc*/) /*CompiledClass::class_table*/;
-      variable20 = ((compiling_global___ColorContext___color_t)CALL( variable1 /*ga*/,COLOR_compiling_global___ColorContext___color))( variable1 /*ga*/,  variable18 /*colpos*/) /*GlobalAnalysis::color*/;
-      ((array___Array_____braeq_t)CALL(variable19,COLOR_abstract_collection___Map_____braeq))(variable19, variable20,  variable18 /*colpos*/) /*Array::[]=*/;
+      /* Register variable[18]: Local variable */
+      /* Register variable[19]: Result */
+      variable[19] = CALL_abstractmetamodel___MMLocalClass___cshe( variable[16] /*c*/)( variable[16] /*c*/) /*MMLocalClass::cshe*/;
+      /* Register variable[19]: Result */
+      variable[19] = CALL_partial_order___PartialOrderElement___direct_greaters(variable[19])(variable[19]) /*PartialOrderElement::direct_greaters*/;
+      /* Register variable[19]: Result */
+      variable[19] = CALL_abstract_collection___Collection___first(variable[19])(variable[19]) /*IndexedCollectionRead::first*/;
+      variable[18] = variable[19];
+      /* Register variable[19]: Local variable */
+      /* Register variable[20]: Result */
+      variable[20] = CALL_compiling_global___GlobalAnalysis___compiled_classes( variable[3] /*ga*/)( variable[3] /*ga*/) /*GlobalAnalysis::compiled_classes*/;
+      /* Register variable[21]: Result */
+      variable[21] = CALL_abstractmetamodel___MMLocalClass___global( variable[18] /*sc*/)( variable[18] /*sc*/) /*MMLocalClass::global*/;
+      /* Register variable[20]: Result */
+      variable[20] = CALL_abstract_collection___MapRead_____bra(variable[20])(variable[20], variable[21]) /*CoupleMap::[]*/;
+      variable[19] = variable[20];
+      /* Register variable[20]: Result */
+      variable[20] = CALL_compiling_global___CompiledClass___class_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::class_table*/;
+      CALL_abstract_collection___RemovableCollection___clear(variable[20])(variable[20]) /*AbstractArray::clear*/;
+      /* Register variable[20]: Result */
+      variable[20] = CALL_compiling_global___CompiledClass___class_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::class_table*/;
+      /* Register variable[21]: Result */
+      variable[21] = CALL_compiling_global___CompiledClass___class_table( variable[19] /*scc*/)( variable[19] /*scc*/) /*CompiledClass::class_table*/;
+      CALL_abstract_collection___SimpleCollection___add_all(variable[20])(variable[20], variable[21]) /*SimpleCollection::add_all*/;
+      /* Register variable[20]: Local variable */
+      /* Register variable[21]: Result */
+      variable[21] = CALL_abstractmetamodel___MMLocalClass___global( variable[16] /*c*/)( variable[16] /*c*/) /*MMLocalClass::global*/;
+      /* Register variable[21]: Result */
+      variable[21] = CALL_abstractmetamodel___MMGlobalClass___intro(variable[21])(variable[21]) /*MMGlobalClass::intro*/;
+      variable[20] = variable[21];
+      /* Register variable[21]: Result */
+      variable[21] = TAG_Bool(( variable[20] /*bc*/==NIT_NULL) || VAL_ISA( variable[20] /*bc*/, COLOR_MMSrcLocalClass, ID_MMSrcLocalClass)) /*cast MMSrcLocalClass*/;
+      if (!UNTAG_Bool(variable[21])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_compiling_global___MMSrcModule___global_analysis, LOCATE_compiling_global, 305); nit_exit(1);}
+      /* Register variable[21]: Local variable */
+      /* Register variable[22]: Result */
+      variable[22] = CALL_compiling_global___MMSrcLocalClass___class_color_pos( variable[20] /*bc*/)( variable[20] /*bc*/) /*MMSrcLocalClass::class_color_pos*/;
+      variable[21] = variable[22];
+      /* Register variable[22]: Result */
+      variable[22] = CALL_compiling_global___CompiledClass___class_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::class_table*/;
+      /* Register variable[23]: Result */
+      variable[23] = CALL_compiling_global___ColorContext___color( variable[3] /*ga*/)( variable[3] /*ga*/,  variable[21] /*colpos*/) /*ColorContext::color*/;
+      CALL_abstract_collection___Map_____braeq(variable[22])(variable[22], variable[23],  variable[21] /*colpos*/) /*Array::[]=*/;
       while (true) { /*while*/
-        variable19 = ((compiling_global___CompiledClass___class_table_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___class_table))( variable14 /*cc*/) /*CompiledClass::class_table*/;
-        variable19 = ((array___AbstractArray___length_t)CALL(variable19,COLOR_abstract_collection___Collection___length))(variable19) /*Array::length*/;
-        variable19 = TAG_Bool(UNTAG_Int(variable19)<=UNTAG_Int( variable11 /*maxcolor*/));
-        if (!UNTAG_Bool(variable19)) break; /* while*/
-        variable19 = ((compiling_global___CompiledClass___class_table_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___class_table))( variable14 /*cc*/) /*CompiledClass::class_table*/;
-        ((array___AbstractArray___add_t)CALL(variable19,COLOR_abstract_collection___SimpleCollection___add))(variable19,  NIT_NULL /*null*/) /*Array::add*/;
-        continue_19: while(0);
-      }
-      break_19: while(0);
-      variable19 = ((compiling_global___CompiledClass___class_table_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___class_table))( variable14 /*cc*/) /*CompiledClass::class_table*/;
-      variable20 = ((compiling_global___CompiledClass___class_layout_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___class_layout))( variable14 /*cc*/) /*CompiledClass::class_layout*/;
-      ((compiling_global___MMSrcModule___append_to_table_t)CALL( self,COLOR_compiling_global___MMSrcModule___append_to_table))( self,  variable1 /*ga*/, variable19, variable20) /*MMSrcModule::append_to_table*/;
-      variable19 = ((compiling_global___CompiledClass___instance_table_t)CALL( variable16 /*scc*/,COLOR_compiling_global___CompiledClass___instance_table))( variable16 /*scc*/) /*CompiledClass::instance_table*/;
-      variable19 = ((array___Collection___to_a_t)CALL(variable19,COLOR_array___Collection___to_a))(variable19) /*Array::to_a*/;
-      ((compiling_global___CompiledClass___instance_table__eq_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___instance_table__eq))( variable14 /*cc*/, variable19) /*CompiledClass::instance_table=*/;
-      variable19 = ((compiling_global___CompiledClass___instance_table_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___instance_table))( variable14 /*cc*/) /*CompiledClass::instance_table*/;
-      variable20 = ((compiling_global___CompiledClass___instance_layout_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___instance_layout))( variable14 /*cc*/) /*CompiledClass::instance_layout*/;
-      ((compiling_global___MMSrcModule___append_to_table_t)CALL( self,COLOR_compiling_global___MMSrcModule___append_to_table))( self,  variable1 /*ga*/, variable19, variable20) /*MMSrcModule::append_to_table*/;
-    }
-    variable15 = ((compiling_base___ToolContext___attr_sim_t)CALL( variable0 /*cctx*/,COLOR_compiling_base___ToolContext___attr_sim))( variable0 /*cctx*/) /*ToolContext::attr_sim*/;
-    if (UNTAG_Bool(variable15)) { /*if*/
-      variable15 = ((compiling_global___MMSrcModule___build_tables_t)CALL( self,COLOR_compiling_global___MMSrcModule___build_tables))( self,  variable1 /*ga*/,  variable13 /*c*/,  variable5 /*itab*/) /*MMSrcModule::build_tables*/;
-      ((compiling_global___CompiledClass___instance_table__eq_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___instance_table__eq))( variable14 /*cc*/, variable15) /*CompiledClass::instance_table=*/;
-      variable15 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( variable13 /*c*/,COLOR_abstractmetamodel___MMLocalClass___cshe))( variable13 /*c*/) /*MMLocalClass::cshe*/;
-      variable15 = ((partial_order___PartialOrderElement___greaters_and_self_t)CALL(variable15,COLOR_partial_order___PartialOrderElement___greaters_and_self))(variable15) /*PartialOrderElement::greaters_and_self*/;
-      variable15 = ((abstract_collection___Collection___iterator_t)CALL(variable15,COLOR_abstract_collection___Collection___iterator))(variable15) /*Collection::iterator*/;
-      while (true) { /*for*/
-        variable16 = ((abstract_collection___Iterator___is_ok_t)CALL(variable15,COLOR_abstract_collection___Iterator___is_ok))(variable15) /*Iterator::is_ok*/;
-        if (!UNTAG_Bool(variable16)) break; /*for*/
-        variable16 = ((abstract_collection___Iterator___item_t)CALL(variable15,COLOR_abstract_collection___Iterator___item))(variable15) /*Iterator::item*/;
-        variable18 = ((compiling_global___GlobalAnalysis___compiled_classes_t)CALL( variable1 /*ga*/,COLOR_compiling_global___GlobalAnalysis___compiled_classes))( variable1 /*ga*/) /*GlobalAnalysis::compiled_classes*/;
-        variable19 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable16 /*sc*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable16 /*sc*/) /*MMLocalClass::global*/;
-        variable18 = ((abstract_collection___CoupleMap_____bra_t)CALL(variable18,COLOR_abstract_collection___Map_____bra))(variable18, variable19) /*HashMap::[]*/;
-        variable17 = variable18;
-        variable18 = ((compiling_global___CompiledClass___instance_table_t)CALL( variable14 /*cc*/,COLOR_compiling_global___CompiledClass___instance_table))( variable14 /*cc*/) /*CompiledClass::instance_table*/;
-        variable19 = ((compiling_global___CompiledClass___instance_layout_t)CALL( variable17 /*scc*/,COLOR_compiling_global___CompiledClass___instance_layout))( variable17 /*scc*/) /*CompiledClass::instance_layout*/;
-        ((compiling_global___MMSrcModule___append_to_table_t)CALL( self,COLOR_compiling_global___MMSrcModule___append_to_table))( self,  variable14 /*cc*/, variable18, variable19) /*MMSrcModule::append_to_table*/;
+        /* Register variable[22]: Result */
+        variable[22] = CALL_compiling_global___CompiledClass___class_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::class_table*/;
+        /* Register variable[22]: Result */
+        variable[22] = CALL_abstract_collection___Collection___length(variable[22])(variable[22]) /*AbstractArrayRead::length*/;
+        /* Register variable[22]: Result */
+        variable[22] = TAG_Bool(UNTAG_Int(variable[22])<=UNTAG_Int( variable[13] /*maxcolor*/));
+        if (!UNTAG_Bool(variable[22])) break; /* while*/
+        /* Register variable[22]: Result */
+        variable[22] = CALL_compiling_global___CompiledClass___class_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::class_table*/;
+        CALL_abstract_collection___SimpleCollection___add(variable[22])(variable[22],  NIT_NULL /*null*/) /*AbstractArray::add*/;
         continue_20: while(0);
-        ((abstract_collection___Iterator___next_t)CALL(variable15,COLOR_abstract_collection___Iterator___next))(variable15) /*Iterator::next*/;
       }
       break_20: while(0);
+      /* Register variable[22]: Result */
+      variable[22] = CALL_compiling_global___CompiledClass___class_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::class_table*/;
+      /* Register variable[23]: Result */
+      variable[23] = CALL_compiling_global___CompiledClass___class_layout( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::class_layout*/;
+      CALL_compiling_global___MMSrcModule___append_to_table(variable[0])(variable[0],  variable[3] /*ga*/, variable[22], variable[23]) /*MMSrcModule::append_to_table*/;
+      /* Register variable[22]: Result */
+      variable[22] = CALL_compiling_global___CompiledClass___instance_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::instance_table*/;
+      /* Register variable[22]: Result */
+      variable[22] = CALL_abstract_collection___Collection___is_empty(variable[22])(variable[22]) /*AbstractArrayRead::is_empty*/;
+      if (!UNTAG_Bool(variable[22])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_compiling_global___MMSrcModule___global_analysis, LOCATE_compiling_global, 312); nit_exit(1);}
+      /* Register variable[22]: Result */
+      variable[22] = CALL_compiling_global___CompiledClass___instance_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::instance_table*/;
+      /* Register variable[23]: Result */
+      variable[23] = CALL_compiling_global___CompiledClass___instance_table( variable[19] /*scc*/)( variable[19] /*scc*/) /*CompiledClass::instance_table*/;
+      CALL_abstract_collection___SimpleCollection___add_all(variable[22])(variable[22], variable[23]) /*SimpleCollection::add_all*/;
+      /* Register variable[22]: Result */
+      variable[22] = CALL_compiling_global___CompiledClass___instance_table( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::instance_table*/;
+      /* Register variable[23]: Result */
+      variable[23] = CALL_compiling_global___CompiledClass___instance_layout( variable[17] /*cc*/)( variable[17] /*cc*/) /*CompiledClass::instance_layout*/;
+      CALL_compiling_global___MMSrcModule___append_to_table(variable[0])(variable[0],  variable[3] /*ga*/, variable[22], variable[23]) /*MMSrcModule::append_to_table*/;
     }
-    continue_18: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable12,COLOR_abstract_collection___Iterator___next))(variable12) /*ArrayIterator::next*/;
+    continue_19: while(0);
+    CALL_abstract_collection___Iterator___next(variable[14])(variable[14]) /*ArrayIterator::next*/;
   }
-  break_18: while(0);
-  variable1 =  variable1 /*ga*/;
-  goto return_label10;
-  return_label10: while(false);
+  break_19: while(0);
+  variable[2] =  variable[3] /*ga*/;
+  goto return_label11;
+  return_label11: while(false);
   tracehead = trace.prev;
-  return variable1;
+  return variable[2];
 }
 void compiling_global___MMSrcModule___append_to_table(val_t  self, val_t  param0, val_t  param1, val_t  param2) {
-  struct trace_t trace = {NULL, "compiling_global::MMSrcModule::append_to_table (src/compiling//compiling_global.nit:338,2--343:14)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-    val_t variable5;
-    val_t variable6;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 = ((compiling_global___TableEltComposite___length_t)CALL( variable2 /*cmp*/,COLOR_compiling_global___TableElt___length))( variable2 /*cmp*/) /*TableEltComposite::length*/;
-  variable4 = NEW_range___Range___without_last( TAG_Int(0), variable3); /*new Range[Int]*/
-  variable3 = variable4;
-  variable3 = ((range___Range___iterator_t)CALL(variable3,COLOR_abstract_collection___Collection___iterator))(variable3) /*Range::iterator*/;
+  struct trace_t trace = {NULL, NULL, 321, LOCATE_compiling_global___MMSrcModule___append_to_table};
+  val_t variable[10];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Method return value and escape marker */
+  /* Register variable[5]: Result */
+  variable[5] = CALL_compiling_global___TableElt___length( variable[3] /*cmp*/)( variable[3] /*cmp*/) /*TableEltComposite::length*/;
+  /* Register variable[5]: Result */
+  variable[5] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[5]) /*new Range[Int]*/;
+  /* Register variable[5]: For iterator */
+  variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*Range::iterator*/;
   while (true) { /*for*/
-    variable4 = ((abstract_collection___Iterator___is_ok_t)CALL(variable3,COLOR_abstract_collection___Iterator___is_ok))(variable3) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable4)) break; /*for*/
-    variable4 = ((abstract_collection___Iterator___item_t)CALL(variable3,COLOR_abstract_collection___Iterator___item))(variable3) /*Iterator::item*/;
-    variable6 = ((compiling_global___TableEltComposite___item_t)CALL( variable2 /*cmp*/,COLOR_compiling_global___TableElt___item))( variable2 /*cmp*/,  variable4 /*j*/) /*TableEltComposite::item*/;
-    variable5 = variable6;
-    variable6 = ((array___AbstractArray___length_t)CALL( variable1 /*table*/,COLOR_abstract_collection___Collection___length))( variable1 /*table*/) /*Array::length*/;
-    ((compiling_global___ColorContext___color__eq_t)CALL( variable0 /*cc*/,COLOR_compiling_global___ColorContext___color__eq))( variable0 /*cc*/,  variable5 /*e*/, variable6) /*ColorContext::color=*/;
-    ((array___AbstractArray___add_t)CALL( variable1 /*table*/,COLOR_abstract_collection___SimpleCollection___add))( variable1 /*table*/,  variable5 /*e*/) /*Array::add*/;
+    /* Register variable[6]: For 'is_ok' result */
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[6])) break; /*for*/
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[7]: Local variable */
+    variable[7] = variable[6];
+    /* Register variable[8]: Local variable */
+    /* Register variable[9]: Result */
+    variable[9] = CALL_compiling_global___TableElt___item( variable[3] /*cmp*/)( variable[3] /*cmp*/,  variable[7] /*j*/) /*TableEltComposite::item*/;
+    variable[8] = variable[9];
+    /* Register variable[9]: Result */
+    variable[9] = CALL_abstract_collection___Collection___length( variable[2] /*table*/)( variable[2] /*table*/) /*AbstractArrayRead::length*/;
+    CALL_compiling_global___ColorContext___color__eq( variable[1] /*cc*/)( variable[1] /*cc*/,  variable[8] /*e*/, variable[9]) /*ColorContext::color=*/;
+    CALL_abstract_collection___SimpleCollection___add( variable[2] /*table*/)( variable[2] /*table*/,  variable[8] /*e*/) /*AbstractArray::add*/;
     continue_22: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable3,COLOR_abstract_collection___Iterator___next))(variable3) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*Iterator::next*/;
   }
   break_22: while(0);
+  return_label21: while(false);
   tracehead = trace.prev;
   return;
 }
-val_t compiling_global___MMSrcModule___build_tables(val_t  self, val_t  param0, val_t  param1, val_t  param2) {
-  struct trace_t trace = {NULL, "compiling_global::MMSrcModule::build_tables (src/compiling//compiling_global.nit:347,2--375:12)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-    val_t variable6;
-    val_t variable7;
-      val_t variable8;
-      val_t variable9;
-        val_t variable10;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable4 = NEW_hash___HashMap___init(); /*new HashMap[Int, TableElt]*/
-  variable3 = variable4;
-  variable4 =  TAG_Int(0);
-  variable5 = ((array___AbstractArray___iterator_t)CALL( variable2 /*elts*/,COLOR_abstract_collection___Collection___iterator))( variable2 /*elts*/) /*Array::iterator*/;
+void compiling_global___MMSrcModule___build_tables_in(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3) {
+  struct trace_t trace = {NULL, NULL, 330, LOCATE_compiling_global___MMSrcModule___build_tables_in};
+  val_t variable[14];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  /* Register variable[5]: Method return value and escape marker */
+  /* Register variable[6]: Local variable */
+  /* Register variable[7]: Result */
+  variable[7] = NEW_HashMap_hash___HashMap___init() /*new HashMap[Int, TableElt]*/;
+  variable[6] = variable[7];
+  /* Register variable[7]: Local variable */
+  variable[7] =  TAG_Int(0);
+  /* Register variable[8]: For iterator */
+  variable[8] = CALL_abstract_collection___Collection___iterator( variable[4] /*elts*/)( variable[4] /*elts*/) /*AbstractArrayRead::iterator*/;
   while (true) { /*for*/
-    variable6 = ((array___ArrayIterator___is_ok_t)CALL(variable5,COLOR_abstract_collection___Iterator___is_ok))(variable5) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable6)) break; /*for*/
-    variable6 = ((array___ArrayIterator___item_t)CALL(variable5,COLOR_abstract_collection___Iterator___item))(variable5) /*ArrayIterator::item*/;
-    variable7 = ((compiling_global___TableElt___is_related_to_t)CALL( variable6 /*e*/,COLOR_compiling_global___TableElt___is_related_to))( variable6 /*e*/,  variable1 /*c*/) /*TableElt::is_related_to*/;
-    if (UNTAG_Bool(variable7)) { /*if*/
-      variable8 = ((compiling_global___ColorContext___color_t)CALL( variable0 /*ga*/,COLOR_compiling_global___ColorContext___color))( variable0 /*ga*/,  variable6 /*e*/) /*GlobalAnalysis::color*/;
-      variable7 = variable8;
-      variable9 = ((compiling_global___TableElt___length_t)CALL( variable6 /*e*/,COLOR_compiling_global___TableElt___length))( variable6 /*e*/) /*TableElt::length*/;
-      variable9 = TAG_Int(UNTAG_Int( variable7 /*col*/)+UNTAG_Int(variable9));
-      variable8 = variable9;
-      ((hash___HashMap_____braeq_t)CALL( variable3 /*tab*/,COLOR_abstract_collection___Map_____braeq))( variable3 /*tab*/,  variable7 /*col*/,  variable6 /*e*/) /*HashMap::[]=*/;
-      variable9 = TAG_Bool(UNTAG_Int( variable4 /*len*/)<UNTAG_Int( variable8 /*l*/));
-      if (UNTAG_Bool(variable9)) { /*if*/
-        variable4 =  variable8 /*l*/ /*len=*/;
+    /* Register variable[9]: For 'is_ok' result */
+    variable[9] = CALL_abstract_collection___Iterator___is_ok(variable[8])(variable[8]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[9])) break; /*for*/
+    variable[9] = CALL_abstract_collection___Iterator___item(variable[8])(variable[8]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[10]: Local variable */
+    variable[10] = variable[9];
+    /* Register variable[11]: Result */
+    variable[11] = CALL_compiling_global___TableElt___is_related_to( variable[10] /*e*/)( variable[10] /*e*/,  variable[3] /*c*/) /*TableElt::is_related_to*/;
+    if (UNTAG_Bool(variable[11])) { /*if*/
+      /* Register variable[11]: Local variable */
+      /* Register variable[12]: Result */
+      variable[12] = CALL_compiling_global___ColorContext___color( variable[2] /*ga*/)( variable[2] /*ga*/,  variable[10] /*e*/) /*ColorContext::color*/;
+      variable[11] = variable[12];
+      /* Register variable[12]: Local variable */
+      /* Register variable[13]: Result */
+      variable[13] = CALL_compiling_global___TableElt___length( variable[10] /*e*/)( variable[10] /*e*/) /*TableElt::length*/;
+      /* Register variable[13]: Result */
+      variable[13] = TAG_Int(UNTAG_Int( variable[11] /*col*/)+UNTAG_Int(variable[13]));
+      variable[12] = variable[13];
+      CALL_abstract_collection___Map_____braeq( variable[6] /*tab*/)( variable[6] /*tab*/,  variable[11] /*col*/,  variable[10] /*e*/) /*HashMap::[]=*/;
+      /* Register variable[13]: Result */
+      variable[13] = TAG_Bool(UNTAG_Int( variable[7] /*len*/)<UNTAG_Int( variable[12] /*l*/));
+      if (UNTAG_Bool(variable[13])) { /*if*/
+        variable[7] =  variable[12] /*l*/ /*len=*/;
       }
     }
     continue_24: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable5,COLOR_abstract_collection___Iterator___next))(variable5) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[8])(variable[8]) /*ArrayIterator::next*/;
   }
   break_24: while(0);
-  variable6 = NEW_array___Array___init(); /*new Array[TableElt]*/
-  variable5 = variable6;
-  variable6 =  TAG_Int(0);
+  /* Register variable[8]: Local variable */
+  variable[8] =  TAG_Int(0);
   while (true) { /*while*/
-    variable7 = TAG_Bool(UNTAG_Int( variable6 /*i*/)<UNTAG_Int( variable4 /*len*/));
-    if (!UNTAG_Bool(variable7)) break; /* while*/
-    variable7 = ((abstract_collection___CoupleMap___has_key_t)CALL( variable3 /*tab*/,COLOR_abstract_collection___Map___has_key))( variable3 /*tab*/,  variable6 /*i*/) /*HashMap::has_key*/;
-    if (UNTAG_Bool(variable7)) { /*if*/
-      variable8 = ((abstract_collection___CoupleMap_____bra_t)CALL( variable3 /*tab*/,COLOR_abstract_collection___Map_____bra))( variable3 /*tab*/,  variable6 /*i*/) /*HashMap::[]*/;
-      variable7 = variable8;
-      variable8 = ((compiling_global___TableElt___length_t)CALL( variable7 /*e*/,COLOR_compiling_global___TableElt___length))( variable7 /*e*/) /*TableElt::length*/;
-      variable9 = NEW_range___Range___without_last( TAG_Int(0), variable8); /*new Range[Int]*/
-      variable8 = variable9;
-      variable8 = ((range___Range___iterator_t)CALL(variable8,COLOR_abstract_collection___Collection___iterator))(variable8) /*Range::iterator*/;
+    /* Register variable[9]: Result */
+    variable[9] = TAG_Bool(UNTAG_Int( variable[8] /*i*/)<UNTAG_Int( variable[7] /*len*/));
+    if (!UNTAG_Bool(variable[9])) break; /* while*/
+    /* Register variable[9]: Result */
+    variable[9] = CALL_abstract_collection___MapRead___has_key( variable[6] /*tab*/)( variable[6] /*tab*/,  variable[8] /*i*/) /*CoupleMap::has_key*/;
+    if (UNTAG_Bool(variable[9])) { /*if*/
+      /* Register variable[9]: Local variable */
+      /* Register variable[10]: Result */
+      variable[10] = CALL_abstract_collection___MapRead_____bra( variable[6] /*tab*/)( variable[6] /*tab*/,  variable[8] /*i*/) /*CoupleMap::[]*/;
+      variable[9] = variable[10];
+      /* Register variable[10]: Result */
+      variable[10] = CALL_compiling_global___TableElt___length( variable[9] /*e*/)( variable[9] /*e*/) /*TableElt::length*/;
+      /* Register variable[10]: Result */
+      variable[10] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[10]) /*new Range[Int]*/;
+      /* Register variable[10]: For iterator */
+      variable[10] = CALL_abstract_collection___Collection___iterator(variable[10])(variable[10]) /*Range::iterator*/;
       while (true) { /*for*/
-        variable9 = ((abstract_collection___Iterator___is_ok_t)CALL(variable8,COLOR_abstract_collection___Iterator___is_ok))(variable8) /*Iterator::is_ok*/;
-        if (!UNTAG_Bool(variable9)) break; /*for*/
-        variable9 = ((abstract_collection___Iterator___item_t)CALL(variable8,COLOR_abstract_collection___Iterator___item))(variable8) /*Iterator::item*/;
-        variable10 = ((compiling_global___TableElt___item_t)CALL( variable7 /*e*/,COLOR_compiling_global___TableElt___item))( variable7 /*e*/,  variable9 /*j*/) /*TableElt::item*/;
-        ((array___Array_____braeq_t)CALL( variable5 /*res*/,COLOR_abstract_collection___Map_____braeq))( variable5 /*res*/,  variable6 /*i*/, variable10) /*Array::[]=*/;
-        variable10 = TAG_Int(UNTAG_Int( variable6 /*i*/)+UNTAG_Int( TAG_Int(1)));
-        variable6 = variable10 /*i=*/;
+        /* Register variable[11]: For 'is_ok' result */
+        variable[11] = CALL_abstract_collection___Iterator___is_ok(variable[10])(variable[10]) /*Iterator::is_ok*/;
+        if (!UNTAG_Bool(variable[11])) break; /*for*/
+        variable[11] = CALL_abstract_collection___Iterator___item(variable[10])(variable[10]) /*Iterator::item*/ /* Ensure var: For item*/;
+        /* Register variable[12]: Local variable */
+        variable[12] = variable[11];
+        /* Register variable[13]: Result */
+        variable[13] = CALL_compiling_global___TableElt___item( variable[9] /*e*/)( variable[9] /*e*/,  variable[12] /*j*/) /*TableElt::item*/;
+        CALL_abstract_collection___Map_____braeq( variable[1] /*table*/)( variable[1] /*table*/,  variable[8] /*i*/, variable[13]) /*Array::[]=*/;
+        /* Register variable[13]: Result */
+        variable[13] = TAG_Int(UNTAG_Int( variable[8] /*i*/)+UNTAG_Int( TAG_Int(1)));
+        variable[8] = variable[13] /*i=*/;
         continue_26: while(0);
-        ((abstract_collection___Iterator___next_t)CALL(variable8,COLOR_abstract_collection___Iterator___next))(variable8) /*Iterator::next*/;
+        CALL_abstract_collection___Iterator___next(variable[10])(variable[10]) /*Iterator::next*/;
       }
       break_26: while(0);
     } else { /*if*/
-      ((array___Array_____braeq_t)CALL( variable5 /*res*/,COLOR_abstract_collection___Map_____braeq))( variable5 /*res*/,  variable6 /*i*/,  NIT_NULL /*null*/) /*Array::[]=*/;
-      variable7 = TAG_Int(UNTAG_Int( variable6 /*i*/)+UNTAG_Int( TAG_Int(1)));
-      variable6 = variable7 /*i=*/;
+      CALL_abstract_collection___Map_____braeq( variable[1] /*table*/)( variable[1] /*table*/,  variable[8] /*i*/,  NIT_NULL /*null*/) /*Array::[]=*/;
+      /* Register variable[9]: Result */
+      variable[9] = TAG_Int(UNTAG_Int( variable[8] /*i*/)+UNTAG_Int( TAG_Int(1)));
+      variable[8] = variable[9] /*i=*/;
     }
     continue_25: while(0);
   }
   break_25: while(0);
-  variable3 =  variable5 /*res*/;
-  goto return_label23;
   return_label23: while(false);
   tracehead = trace.prev;
-  return variable3;
+  return;
 }
 void compiling_global___MMSrcModule___colorize(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3) {
-  struct trace_t trace = {NULL, "compiling_global::MMSrcModule::colorize (src/compiling//compiling_global.nit:378,2--416:29)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-    val_t variable7;
-    val_t variable8;
-    val_t variable9;
-    val_t variable10;
-        val_t variable11;
-        val_t variable12;
-          val_t variable13;
-            val_t variable14;
-            val_t variable15;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 =  param2;
-  variable3 =  param3;
-  variable5 = NEW_hash___HashMap___init(); /*new HashMap[Int, Array[TableElt]]*/
-  variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[MMLocalClass]*/
-  variable5 = variable6;
-  variable6 = ((array___AbstractArray___iterator_t)CALL( variable1 /*elts*/,COLOR_abstract_collection___Collection___iterator))( variable1 /*elts*/) /*Array::iterator*/;
+  struct trace_t trace = {NULL, NULL, 359, LOCATE_compiling_global___MMSrcModule___colorize};
+  val_t variable[19];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Local variable */
+  variable[3] =  param2;
+  /* Register variable[4]: Local variable */
+  variable[4] =  param3;
+  /* Register variable[5]: Method return value and escape marker */
+  /* Register variable[6]: Local variable */
+  /* Register variable[7]: Result */
+  variable[7] = NEW_HashMap_hash___HashMap___init() /*new HashMap[Int, Array[TableElt]]*/;
+  variable[6] = variable[7];
+  /* Register variable[7]: Local variable */
+  /* Register variable[8]: Result */
+  variable[8] = NEW_Array_array___Array___init() /*new Array[MMLocalClass]*/;
+  variable[7] = variable[8];
+  /* Register variable[8]: For iterator */
+  variable[8] = CALL_abstract_collection___Collection___iterator( variable[2] /*elts*/)( variable[2] /*elts*/) /*AbstractArrayRead::iterator*/;
   while (true) { /*for*/
-    variable7 = ((array___ArrayIterator___is_ok_t)CALL(variable6,COLOR_abstract_collection___Iterator___is_ok))(variable6) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable7)) break; /*for*/
-    variable7 = ((array___ArrayIterator___item_t)CALL(variable6,COLOR_abstract_collection___Iterator___item))(variable6) /*ArrayIterator::item*/;
-    variable9 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-    variable8 = variable9;
-    variable10 = ((compiling_global___TableElt___length_t)CALL( variable7 /*e*/,COLOR_compiling_global___TableElt___length))( variable7 /*e*/) /*TableElt::length*/;
-    variable9 = variable10;
-    variable10 = ((compiling_global___ColorContext___has_color_t)CALL( variable0 /*ga*/,COLOR_compiling_global___ColorContext___has_color))( variable0 /*ga*/,  variable7 /*e*/) /*GlobalAnalysis::has_color*/;
-    if (UNTAG_Bool(variable10)) { /*if*/
-      variable10 = ((compiling_global___ColorContext___color_t)CALL( variable0 /*ga*/,COLOR_compiling_global___ColorContext___color))( variable0 /*ga*/,  variable7 /*e*/) /*GlobalAnalysis::color*/;
-      variable8 = variable10 /*color=*/;
+    /* Register variable[9]: For 'is_ok' result */
+    variable[9] = CALL_abstract_collection___Iterator___is_ok(variable[8])(variable[8]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[9])) break; /*for*/
+    variable[9] = CALL_abstract_collection___Iterator___item(variable[8])(variable[8]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[10]: Local variable */
+    variable[10] = variable[9];
+    /* Register variable[11]: Local variable */
+    /* Register variable[12]: Result */
+    variable[12] = TAG_Int(-UNTAG_Int( TAG_Int(1)));
+    variable[11] = variable[12];
+    /* Register variable[12]: Local variable */
+    /* Register variable[13]: Result */
+    variable[13] = CALL_compiling_global___TableElt___length( variable[10] /*e*/)( variable[10] /*e*/) /*TableElt::length*/;
+    variable[12] = variable[13];
+    /* Register variable[13]: Result */
+    variable[13] = CALL_compiling_global___ColorContext___has_color( variable[1] /*ga*/)( variable[1] /*ga*/,  variable[10] /*e*/) /*ColorContext::has_color*/;
+    if (UNTAG_Bool(variable[13])) { /*if*/
+      /* Register variable[13]: Result */
+      variable[13] = CALL_compiling_global___ColorContext___color( variable[1] /*ga*/)( variable[1] /*ga*/,  variable[10] /*e*/) /*ColorContext::color*/;
+      variable[11] = variable[13] /*color=*/;
     } else { /*if*/
-      ((array___AbstractArray___clear_t)CALL( variable5 /*rel_classes*/,COLOR_abstract_collection___RemovableCollection___clear))( variable5 /*rel_classes*/) /*Array::clear*/;
-      variable10 = ((abstract_collection___Collection___iterator_t)CALL( variable2 /*classes*/,COLOR_abstract_collection___Collection___iterator))( variable2 /*classes*/) /*Collection::iterator*/;
+      CALL_abstract_collection___RemovableCollection___clear( variable[7] /*rel_classes*/)( variable[7] /*rel_classes*/) /*AbstractArray::clear*/;
+      /* Register variable[13]: For iterator */
+      variable[13] = CALL_abstract_collection___Collection___iterator( variable[3] /*classes*/)( variable[3] /*classes*/) /*Collection::iterator*/;
       while (true) { /*for*/
-        variable11 = ((abstract_collection___Iterator___is_ok_t)CALL(variable10,COLOR_abstract_collection___Iterator___is_ok))(variable10) /*Iterator::is_ok*/;
-        if (!UNTAG_Bool(variable11)) break; /*for*/
-        variable11 = ((abstract_collection___Iterator___item_t)CALL(variable10,COLOR_abstract_collection___Iterator___item))(variable10) /*Iterator::item*/;
-        variable12 = ((compiling_global___TableElt___is_related_to_t)CALL( variable7 /*e*/,COLOR_compiling_global___TableElt___is_related_to))( variable7 /*e*/,  variable11 /*c*/) /*TableElt::is_related_to*/;
-        if (UNTAG_Bool(variable12)) { /*if*/
-          ((array___AbstractArray___add_t)CALL( variable5 /*rel_classes*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*rel_classes*/,  variable11 /*c*/) /*Array::add*/;
+        /* Register variable[14]: For 'is_ok' result */
+        variable[14] = CALL_abstract_collection___Iterator___is_ok(variable[13])(variable[13]) /*Iterator::is_ok*/;
+        if (!UNTAG_Bool(variable[14])) break; /*for*/
+        variable[14] = CALL_abstract_collection___Iterator___item(variable[13])(variable[13]) /*Iterator::item*/ /* Ensure var: For item*/;
+        /* Register variable[15]: Local variable */
+        variable[15] = variable[14];
+        /* Register variable[16]: Result */
+        variable[16] = CALL_compiling_global___TableElt___is_related_to( variable[10] /*e*/)( variable[10] /*e*/,  variable[15] /*c*/) /*TableElt::is_related_to*/;
+        if (UNTAG_Bool(variable[16])) { /*if*/
+          CALL_abstract_collection___SimpleCollection___add( variable[7] /*rel_classes*/)( variable[7] /*rel_classes*/,  variable[15] /*c*/) /*AbstractArray::add*/;
         }
         continue_29: while(0);
-        ((abstract_collection___Iterator___next_t)CALL(variable10,COLOR_abstract_collection___Iterator___next))(variable10) /*Iterator::next*/;
+        CALL_abstract_collection___Iterator___next(variable[13])(variable[13]) /*Iterator::next*/;
       }
       break_29: while(0);
-      variable10 =  variable3 /*startcolor*/;
+      /* Register variable[13]: Local variable */
+      variable[13] =  variable[4] /*startcolor*/;
       while (true) { /*while*/
-        variable11 = TAG_Bool(( variable10 /*trycolor*/)!=( variable8 /*color*/));
-        if (!UNTAG_Bool(variable11)) break; /* while*/
-        variable8 =  variable10 /*trycolor*/ /*color=*/;
-        variable11 = ((array___AbstractArray___iterator_t)CALL( variable5 /*rel_classes*/,COLOR_abstract_collection___Collection___iterator))( variable5 /*rel_classes*/) /*Array::iterator*/;
+        /* Register variable[14]: Result */
+        variable[14] = TAG_Bool(( variable[13] /*trycolor*/)!=( variable[11] /*color*/));
+        if (!UNTAG_Bool(variable[14])) break; /* while*/
+        variable[11] =  variable[13] /*trycolor*/ /*color=*/;
+        /* Register variable[14]: For iterator */
+        variable[14] = CALL_abstract_collection___Collection___iterator( variable[7] /*rel_classes*/)( variable[7] /*rel_classes*/) /*AbstractArrayRead::iterator*/;
         while (true) { /*for*/
-          variable12 = ((array___ArrayIterator___is_ok_t)CALL(variable11,COLOR_abstract_collection___Iterator___is_ok))(variable11) /*ArrayIterator::is_ok*/;
-          if (!UNTAG_Bool(variable12)) break; /*for*/
-          variable12 = ((array___ArrayIterator___item_t)CALL(variable11,COLOR_abstract_collection___Iterator___item))(variable11) /*ArrayIterator::item*/;
-          variable13 =  TAG_Int(0);
+          /* Register variable[15]: For 'is_ok' result */
+          variable[15] = CALL_abstract_collection___Iterator___is_ok(variable[14])(variable[14]) /*ArrayIterator::is_ok*/;
+          if (!UNTAG_Bool(variable[15])) break; /*for*/
+          variable[15] = CALL_abstract_collection___Iterator___item(variable[14])(variable[14]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+          /* Register variable[16]: Local variable */
+          variable[16] = variable[15];
+          /* Register variable[17]: Local variable */
+          variable[17] =  TAG_Int(0);
           while (true) { /*while*/
-            variable14 = TAG_Bool(UNTAG_Int( variable13 /*idx*/)<UNTAG_Int( variable9 /*len*/));
-            if (!UNTAG_Bool(variable14)) break; /* while*/
-            variable14 = TAG_Int(UNTAG_Int( variable10 /*trycolor*/)+UNTAG_Int( variable13 /*idx*/));
-            variable14 = ((abstract_collection___CoupleMap___has_key_t)CALL( variable4 /*colors*/,COLOR_abstract_collection___Map___has_key))( variable4 /*colors*/, variable14) /*HashMap::has_key*/;
-            variable15 = variable14;
-            if (UNTAG_Bool(variable15)) { /* and */
-              variable15 = TAG_Int(UNTAG_Int( variable10 /*trycolor*/)+UNTAG_Int( variable13 /*idx*/));
-              variable15 = ((abstract_collection___CoupleMap_____bra_t)CALL( variable4 /*colors*/,COLOR_abstract_collection___Map_____bra))( variable4 /*colors*/, variable15) /*HashMap::[]*/;
-              variable15 = ((compiling_global___MMSrcModule___free_color_t)CALL( self,COLOR_compiling_global___MMSrcModule___free_color))( self, variable15,  variable12 /*c*/) /*MMSrcModule::free_color*/;
-              variable15 =  TAG_Bool(!UNTAG_Bool(variable15));
+            /* Register variable[18]: Result */
+            variable[18] = TAG_Bool(UNTAG_Int( variable[17] /*idx*/)<UNTAG_Int( variable[12] /*len*/));
+            if (!UNTAG_Bool(variable[18])) break; /* while*/
+            /* Register variable[18]: Result */
+            variable[18] = TAG_Int(UNTAG_Int( variable[13] /*trycolor*/)+UNTAG_Int( variable[17] /*idx*/));
+            /* Register variable[18]: Result */
+            variable[18] = CALL_abstract_collection___MapRead___has_key( variable[6] /*colors*/)( variable[6] /*colors*/, variable[18]) /*CoupleMap::has_key*/;
+            /* Ensure var variable[18]: Left 'and' operand*/
+            if (UNTAG_Bool(variable[18])) { /* and */
+              /* Register variable[18]: Result */
+              variable[18] = TAG_Int(UNTAG_Int( variable[13] /*trycolor*/)+UNTAG_Int( variable[17] /*idx*/));
+              /* Register variable[18]: Result */
+              variable[18] = CALL_abstract_collection___MapRead_____bra( variable[6] /*colors*/)( variable[6] /*colors*/, variable[18]) /*CoupleMap::[]*/;
+              /* Register variable[18]: Result */
+              variable[18] = CALL_compiling_global___MMSrcModule___free_color(variable[0])(variable[0], variable[18],  variable[16] /*c*/) /*MMSrcModule::free_color*/;
+              variable[18] =  TAG_Bool(!UNTAG_Bool(variable[18]));
             }
-            variable14 = variable15;
-            if (UNTAG_Bool(variable14)) { /*if*/
-              variable14 = TAG_Int(UNTAG_Int( variable10 /*trycolor*/)+UNTAG_Int( variable13 /*idx*/));
-              variable14 = TAG_Int(UNTAG_Int(variable14)+UNTAG_Int( TAG_Int(1)));
-              variable10 = variable14 /*trycolor=*/;
-              variable13 =  TAG_Int(0) /*idx=*/;
+            /* Register variable[18]: Result */
+            if (UNTAG_Bool(variable[18])) { /*if*/
+              /* Register variable[18]: Result */
+              variable[18] = TAG_Int(UNTAG_Int( variable[13] /*trycolor*/)+UNTAG_Int( variable[17] /*idx*/));
+              /* Register variable[18]: Result */
+              variable[18] = TAG_Int(UNTAG_Int(variable[18])+UNTAG_Int( TAG_Int(1)));
+              variable[13] = variable[18] /*trycolor=*/;
+              variable[17] =  TAG_Int(0) /*idx=*/;
             } else { /*if*/
-              variable14 = TAG_Int(UNTAG_Int( variable13 /*idx*/)+UNTAG_Int( TAG_Int(1)));
-              variable13 = variable14 /*idx=*/;
+              /* Register variable[18]: Result */
+              variable[18] = TAG_Int(UNTAG_Int( variable[17] /*idx*/)+UNTAG_Int( TAG_Int(1)));
+              variable[17] = variable[18] /*idx=*/;
             }
             continue_32: while(0);
           }
           break_32: while(0);
           continue_31: while(0);
-          ((array___ArrayIterator___next_t)CALL(variable11,COLOR_abstract_collection___Iterator___next))(variable11) /*ArrayIterator::next*/;
+          CALL_abstract_collection___Iterator___next(variable[14])(variable[14]) /*ArrayIterator::next*/;
         }
         break_31: while(0);
         continue_30: while(0);
       }
       break_30: while(0);
-      ((compiling_global___ColorContext___color__eq_t)CALL( variable0 /*ga*/,COLOR_compiling_global___ColorContext___color__eq))( variable0 /*ga*/,  variable7 /*e*/,  variable8 /*color*/) /*GlobalAnalysis::color=*/;
+      CALL_compiling_global___ColorContext___color__eq( variable[1] /*ga*/)( variable[1] /*ga*/,  variable[10] /*e*/,  variable[11] /*color*/) /*ColorContext::color=*/;
     }
-    variable10 = NEW_range___Range___without_last( TAG_Int(0),  variable9 /*len*/); /*new Range[Int]*/
-    variable10 = ((range___Range___iterator_t)CALL(variable10,COLOR_abstract_collection___Collection___iterator))(variable10) /*Range::iterator*/;
+    /* Register variable[13]: Result */
+    variable[13] = NEW_Range_range___Range___without_last( TAG_Int(0),  variable[12] /*len*/) /*new Range[Int]*/;
+    /* Register variable[13]: For iterator */
+    variable[13] = CALL_abstract_collection___Collection___iterator(variable[13])(variable[13]) /*Range::iterator*/;
     while (true) { /*for*/
-      variable11 = ((abstract_collection___Iterator___is_ok_t)CALL(variable10,COLOR_abstract_collection___Iterator___is_ok))(variable10) /*Iterator::is_ok*/;
-      if (!UNTAG_Bool(variable11)) break; /*for*/
-      variable11 = ((abstract_collection___Iterator___item_t)CALL(variable10,COLOR_abstract_collection___Iterator___item))(variable10) /*Iterator::item*/;
-      variable12 = TAG_Int(UNTAG_Int( variable8 /*color*/)+UNTAG_Int( variable11 /*idx*/));
-      variable12 = ((abstract_collection___CoupleMap___has_key_t)CALL( variable4 /*colors*/,COLOR_abstract_collection___Map___has_key))( variable4 /*colors*/, variable12) /*HashMap::has_key*/;
-      if (UNTAG_Bool(variable12)) { /*if*/
-        variable12 = TAG_Int(UNTAG_Int( variable8 /*color*/)+UNTAG_Int( variable11 /*idx*/));
-        variable12 = ((abstract_collection___CoupleMap_____bra_t)CALL( variable4 /*colors*/,COLOR_abstract_collection___Map_____bra))( variable4 /*colors*/, variable12) /*HashMap::[]*/;
-        ((array___AbstractArray___add_t)CALL(variable12,COLOR_abstract_collection___SimpleCollection___add))(variable12,  variable7 /*e*/) /*Array::add*/;
+      /* Register variable[14]: For 'is_ok' result */
+      variable[14] = CALL_abstract_collection___Iterator___is_ok(variable[13])(variable[13]) /*Iterator::is_ok*/;
+      if (!UNTAG_Bool(variable[14])) break; /*for*/
+      variable[14] = CALL_abstract_collection___Iterator___item(variable[13])(variable[13]) /*Iterator::item*/ /* Ensure var: For item*/;
+      /* Register variable[15]: Local variable */
+      variable[15] = variable[14];
+      /* Register variable[16]: Result */
+      variable[16] = TAG_Int(UNTAG_Int( variable[11] /*color*/)+UNTAG_Int( variable[15] /*idx*/));
+      /* Register variable[16]: Result */
+      variable[16] = CALL_abstract_collection___MapRead___has_key( variable[6] /*colors*/)( variable[6] /*colors*/, variable[16]) /*CoupleMap::has_key*/;
+      if (UNTAG_Bool(variable[16])) { /*if*/
+        /* Register variable[16]: Result */
+        variable[16] = TAG_Int(UNTAG_Int( variable[11] /*color*/)+UNTAG_Int( variable[15] /*idx*/));
+        /* Register variable[16]: Result */
+        variable[16] = CALL_abstract_collection___MapRead_____bra( variable[6] /*colors*/)( variable[6] /*colors*/, variable[16]) /*CoupleMap::[]*/;
+        CALL_abstract_collection___SimpleCollection___add(variable[16])(variable[16],  variable[10] /*e*/) /*AbstractArray::add*/;
       } else { /*if*/
-        variable12 = TAG_Int(UNTAG_Int( variable8 /*color*/)+UNTAG_Int( variable11 /*idx*/));
-        variable13 = NEW_array___Array___with_capacity(TAG_Int(1)); /*new Array[TableElt]*/
-        ((array___AbstractArray___add_t)CALL(variable13,COLOR_abstract_collection___SimpleCollection___add))(variable13,  variable7 /*e*/) /*Array::add*/;
-        ((hash___HashMap_____braeq_t)CALL( variable4 /*colors*/,COLOR_abstract_collection___Map_____braeq))( variable4 /*colors*/, variable12, variable13) /*HashMap::[]=*/;
+        /* Register variable[16]: Result */
+        variable[16] = TAG_Int(UNTAG_Int( variable[11] /*color*/)+UNTAG_Int( variable[15] /*idx*/));
+        variable[17] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[TableElt]*/ /* Ensure var: Literal array*/;
+        CALL_abstract_collection___SimpleCollection___add(variable[17])(variable[17],  variable[10] /*e*/) /*AbstractArray::add*/;
+        /* Register variable[17]: Result */
+        CALL_abstract_collection___Map_____braeq( variable[6] /*colors*/)( variable[6] /*colors*/, variable[16], variable[17]) /*HashMap::[]=*/;
       }
       continue_33: while(0);
-      ((abstract_collection___Iterator___next_t)CALL(variable10,COLOR_abstract_collection___Iterator___next))(variable10) /*Iterator::next*/;
+      CALL_abstract_collection___Iterator___next(variable[13])(variable[13]) /*Iterator::next*/;
     }
     break_33: while(0);
     continue_28: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable6,COLOR_abstract_collection___Iterator___next))(variable6) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[8])(variable[8]) /*ArrayIterator::next*/;
   }
   break_28: while(0);
+  return_label27: while(false);
   tracehead = trace.prev;
   return;
 }
 val_t compiling_global___MMSrcModule___free_color(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "compiling_global::MMSrcModule::free_color (src/compiling//compiling_global.nit:422,2--429:13)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-    val_t variable3;
-    val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = ((array___AbstractArray___iterator_t)CALL( variable0 /*es*/,COLOR_abstract_collection___Collection___iterator))( variable0 /*es*/) /*Array::iterator*/;
+  struct trace_t trace = {NULL, NULL, 403, LOCATE_compiling_global___MMSrcModule___free_color};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator( variable[1] /*es*/)( variable[1] /*es*/) /*AbstractArrayRead::iterator*/;
   while (true) { /*for*/
-    variable3 = ((array___ArrayIterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((array___ArrayIterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*ArrayIterator::item*/;
-    variable4 = ((compiling_global___TableElt___is_related_to_t)CALL( variable3 /*e2*/,COLOR_compiling_global___TableElt___is_related_to))( variable3 /*e2*/,  variable1 /*c*/) /*TableElt::is_related_to*/;
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable2 =  TAG_Bool(false);
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = CALL_compiling_global___TableElt___is_related_to( variable[6] /*e2*/)( variable[6] /*e2*/,  variable[2] /*c*/) /*TableElt::is_related_to*/;
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      variable[3] =  TAG_Bool(false);
       goto return_label34;
     }
     continue_35: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*ArrayIterator::next*/;
   }
   break_35: while(0);
-  variable2 =  TAG_Bool(true);
+  variable[3] =  TAG_Bool(true);
   goto return_label34;
   return_label34: while(false);
   tracehead = trace.prev;
-  return variable2;
+  return variable[3];
 }
 void compiling_global___MMSrcModule___compile_tables_to_c(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::MMSrcModule::compile_tables_to_c (src/compiling//compiling_global.nit:432,2--452:15)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-    val_t variable3;
-  val_t variable4;
-  val_t variable5;
-      val_t variable6;
-      val_t variable7;
-      val_t variable8;
-      val_t variable9;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ((abstractmetamodel___MMModule___mhe_t)CALL( self,COLOR_abstractmetamodel___MMModule___mhe))( self) /*MMSrcModule::mhe*/;
-  variable1 = ((partial_order___PartialOrderElement___greaters_and_self_t)CALL(variable1,COLOR_partial_order___PartialOrderElement___greaters_and_self))(variable1) /*PartialOrderElement::greaters_and_self*/;
-  variable1 = ((abstract_collection___Collection___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Collection::iterator*/;
+  struct trace_t trace = {NULL, NULL, 413, LOCATE_compiling_global___MMSrcModule___compile_tables_to_c};
+  static val_t once_value_39 = NIT_NULL; /* Once value for string variable[4]*/
+  static val_t once_value_41 = NIT_NULL; /* Once value for string variable[5]*/
+  static val_t once_value_42 = NIT_NULL; /* Once value for string variable[6]*/
+  static val_t once_value_43 = NIT_NULL; /* Once value for string variable[7]*/
+      static val_t once_value_44 = NIT_NULL; /* Once value for string variable[8]*/
+      static val_t once_value_45 = NIT_NULL; /* Once value for string variable[8]*/
+      static val_t once_value_46 = NIT_NULL; /* Once value for string variable[7]*/
+  static val_t once_value_47 = NIT_NULL; /* Once value for string variable[4]*/
+  val_t variable[9];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = CALL_abstractmetamodel___MMModule___mhe(variable[0])(variable[0]) /*MMModule::mhe*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_partial_order___PartialOrderElement___greaters_and_self(variable[3])(variable[3]) /*PartialOrderElement::greaters_and_self*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*Collection::iterator*/;
   while (true) { /*for*/
-    variable2 = ((abstract_collection___Iterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*Iterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((abstract_collection___Iterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*Iterator::item*/;
-    variable3 = TAG_Bool(( variable2 /*m*/==NIT_NULL) || VAL_ISA( variable2 /*m*/, COLOR_MMSrcModule, ID_MMSrcModule)) /*cast MMSrcModule*/;
-    if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert failed: src/compiling//compiling_global.nit:436,4--27\n"); nit_exit(1);}
-    ((compiling_global___MMSrcModule___compile_local_table_to_c_t)CALL( variable2 /*m*/,COLOR_compiling_global___MMSrcModule___compile_local_table_to_c))( variable2 /*m*/,  variable0 /*v*/) /*MMSrcModule::compile_local_table_to_c*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    /* Register variable[6]: Result */
+    variable[6] = TAG_Bool(( variable[5] /*m*/==NIT_NULL) || VAL_ISA( variable[5] /*m*/, COLOR_MMSrcModule, ID_MMSrcModule)) /*cast MMSrcModule*/;
+    if (!UNTAG_Bool(variable[6])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_compiling_global___MMSrcModule___compile_tables_to_c, LOCATE_compiling_global, 417); nit_exit(1);}
+    CALL_compiling_global___MMSrcModule___compile_local_table_to_c( variable[5] /*m*/)( variable[5] /*m*/,  variable[1] /*v*/) /*MMSrcModule::compile_local_table_to_c*/;
     continue_37: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*Iterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*Iterator::next*/;
   }
   break_37: while(0);
-  variable1 = ((abstractmetamodel___MMModule___local_classes_t)CALL( self,COLOR_abstractmetamodel___MMModule___local_classes))( self) /*MMSrcModule::local_classes*/;
-  variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Array::iterator*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_abstractmetamodel___MMModule___local_classes(variable[0])(variable[0]) /*MMModule::local_classes*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*AbstractArrayRead::iterator*/;
   while (true) { /*for*/
-    variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
-    ((compiling_global___MMLocalClass___compile_tables_to_c_t)CALL( variable2 /*c*/,COLOR_compiling_global___MMLocalClass___compile_tables_to_c))( variable2 /*c*/,  variable0 /*v*/) /*MMLocalClass::compile_tables_to_c*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    CALL_compiling_global___MMLocalClass___compile_tables_to_c( variable[5] /*c*/)( variable[5] /*c*/,  variable[1] /*v*/) /*MMLocalClass::compile_tables_to_c*/;
     continue_38: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ArrayIterator::next*/;
   }
   break_38: while(0);
-  variable2 = NEW_string___String___with_native(BOX_NativeString("classtable_t TAG2VFT[4] = {NULL"), TAG_Int(31)); /*new String*/
-  variable1 = variable2;
-  variable2 = NEW_array___Array___with_capacity(TAG_Int(3)); /*new Array[String]*/
-  variable3 = NEW_string___String___with_native(BOX_NativeString("Int"), TAG_Int(3)); /*new String*/
-  ((array___AbstractArray___add_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add))(variable2, variable3) /*Array::add*/;
-  variable4 = NEW_string___String___with_native(BOX_NativeString("Char"), TAG_Int(4)); /*new String*/
-  ((array___AbstractArray___add_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add))(variable2, variable4) /*Array::add*/;
-  variable5 = NEW_string___String___with_native(BOX_NativeString("Bool"), TAG_Int(4)); /*new String*/
-  ((array___AbstractArray___add_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add))(variable2, variable5) /*Array::add*/;
-  variable2 = ((array___AbstractArray___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Array::iterator*/;
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Once String constant */
+  if (once_value_39 != NIT_NULL) variable[4] = once_value_39;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString("classtable_t TAG2VFT[4] = {NULL"), TAG_Int(31)) /*new String*/;
+    once_value_39 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Register variable[4]: Result */
+  variable[4] = NEW_Buffer_string___Buffer___from(variable[4]) /*new Buffer*/;
+  variable[3] = variable[4];
+  variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Literal array*/;
+  /* Register variable[5]: Once String constant */
+  if (once_value_41 != NIT_NULL) variable[5] = once_value_41;
+  else {
+    variable[5] = NEW_String_string___String___with_native(BOX_NativeString("Int"), TAG_Int(3)) /*new String*/;
+    once_value_41 = variable[5];
+  }
+  /* Register variable[5]: Result */
+  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_42 != NIT_NULL) variable[6] = once_value_42;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString("Char"), TAG_Int(4)) /*new String*/;
+    once_value_42 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[7]: Once String constant */
+  if (once_value_43 != NIT_NULL) variable[7] = once_value_43;
+  else {
+    variable[7] = NEW_String_string___String___with_native(BOX_NativeString("Bool"), TAG_Int(4)) /*new String*/;
+    once_value_43 = variable[7];
+  }
+  /* Register variable[7]: Result */
+  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[7]) /*AbstractArray::add*/;
+  /* Register variable[4]: Result */
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*AbstractArrayRead::iterator*/;
   while (true) { /*for*/
-    variable3 = ((array___ArrayIterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((array___ArrayIterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*ArrayIterator::item*/;
-    variable4 = ((symbol___String___to_symbol_t)CALL( variable3 /*t*/,COLOR_symbol___String___to_symbol))( variable3 /*t*/) /*String::to_symbol*/;
-    variable4 = ((abstractmetamodel___MMModule___has_global_class_named_t)CALL( self,COLOR_abstractmetamodel___MMModule___has_global_class_named))( self, variable4) /*MMSrcModule::has_global_class_named*/;
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = NEW_string___String___init(); /*new String*/
-      variable5 = NEW_string___String___with_native(BOX_NativeString(", (const classtable_t)VFT_"), TAG_Int(26)); /*new String*/
-      variable6 = variable5;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable6) /*String::append*/;
-      variable7 =  variable3 /*t*/;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable7) /*String::append*/;
-      variable8 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-      variable9 = variable8;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable9) /*String::append*/;
-      ((string___String___append_t)CALL( variable1 /*s*/,COLOR_abstract_collection___IndexedCollection___append))( variable1 /*s*/, variable4) /*String::append*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = CALL_symbol___String___to_symbol( variable[6] /*t*/)( variable[6] /*t*/) /*String::to_symbol*/;
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstractmetamodel___MMModule___has_global_class_named(variable[0])(variable[0], variable[7]) /*MMModule::has_global_class_named*/;
+    if (UNTAG_Bool(variable[7])) { /*if*/
+      variable[7] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+      /* Register variable[8]: Once String constant */
+      if (once_value_44 != NIT_NULL) variable[8] = once_value_44;
+      else {
+        variable[8] = NEW_String_string___String___with_native(BOX_NativeString(", (const classtable_t)VFT_"), TAG_Int(26)) /*new String*/;
+        once_value_44 = variable[8];
+      }
+      /* Register variable[8]: Result */
+      /* Ensure var variable[8]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
+      variable[8] =  variable[6] /*t*/ /* Ensure var: super-string element*/;
+      CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
+      /* Register variable[8]: Once String constant */
+      if (once_value_45 != NIT_NULL) variable[8] = once_value_45;
+      else {
+        variable[8] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+        once_value_45 = variable[8];
+      }
+      /* Register variable[8]: Result */
+      /* Ensure var variable[8]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[7])(variable[7], variable[8]) /*AbstractArray::add*/;
+      /* Register variable[7]: Result */
+      variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/;
+      CALL_abstract_collection___IndexedCollection___append( variable[3] /*s*/)( variable[3] /*s*/, variable[7]) /*Buffer::append*/;
     } else { /*if*/
-      variable4 = NEW_string___String___with_native(BOX_NativeString(", NULL"), TAG_Int(6)); /*new String*/
-      ((string___String___append_t)CALL( variable1 /*s*/,COLOR_abstract_collection___IndexedCollection___append))( variable1 /*s*/, variable4) /*String::append*/;
+      /* Register variable[7]: Once String constant */
+      if (once_value_46 != NIT_NULL) variable[7] = once_value_46;
+      else {
+        variable[7] = NEW_String_string___String___with_native(BOX_NativeString(", NULL"), TAG_Int(6)) /*new String*/;
+        once_value_46 = variable[7];
+      }
+      /* Register variable[7]: Result */
+      CALL_abstract_collection___IndexedCollection___append( variable[3] /*s*/)( variable[3] /*s*/, variable[7]) /*Buffer::append*/;
     }
-    continue_39: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*ArrayIterator::next*/;
+    continue_40: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*ArrayIterator::next*/;
+  }
+  break_40: while(0);
+  /* Register variable[4]: Once String constant */
+  if (once_value_47 != NIT_NULL) variable[4] = once_value_47;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString("};"), TAG_Int(2)) /*new String*/;
+    once_value_47 = variable[4];
   }
-  break_39: while(0);
-  variable2 = NEW_string___String___with_native(BOX_NativeString("};"), TAG_Int(2)); /*new String*/
-  ((string___String___append_t)CALL( variable1 /*s*/,COLOR_abstract_collection___IndexedCollection___append))( variable1 /*s*/, variable2) /*String::append*/;
-  ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/,  variable1 /*s*/) /*CompilerVisitor::add_instr*/;
+  /* Register variable[4]: Result */
+  CALL_abstract_collection___IndexedCollection___append( variable[3] /*s*/)( variable[3] /*s*/, variable[4]) /*Buffer::append*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_string___Object___to_s( variable[3] /*s*/)( variable[3] /*s*/) /*Buffer::to_s*/;
+  CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*CompilerVisitor::add_instr*/;
+  return_label36: while(false);
   tracehead = trace.prev;
   return;
 }
 void compiling_global___MMSrcModule___declare_class_tables_to_c(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::MMSrcModule::declare_class_tables_to_c (src/compiling//compiling_global.nit:455,2--460:27)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-    val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ((abstractmetamodel___MMModule___local_classes_t)CALL( self,COLOR_abstractmetamodel___MMModule___local_classes))( self) /*MMSrcModule::local_classes*/;
-  variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Array::iterator*/;
+  struct trace_t trace = {NULL, NULL, 436, LOCATE_compiling_global___MMSrcModule___declare_class_tables_to_c};
+  val_t variable[7];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = CALL_abstractmetamodel___MMModule___local_classes(variable[0])(variable[0]) /*MMModule::local_classes*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*AbstractArrayRead::iterator*/;
   while (true) { /*for*/
-    variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
-    variable3 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable2 /*c*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable2 /*c*/) /*MMLocalClass::global*/;
-    variable3 = ((abstractmetamodel___MMGlobalClass___module_t)CALL(variable3,COLOR_abstractmetamodel___MMGlobalClass___module))(variable3) /*MMGlobalClass::module*/;
-    variable3 = TAG_Bool((variable3 ==  self) || ((variable3 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable3, self)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable3,COLOR_kernel___Object_____eqeq))(variable3,  self) /*MMModule::==*/)))));
-    if (UNTAG_Bool(variable3)) { /*if*/
-      ((compiling_global___MMLocalClass___declare_tables_to_c_t)CALL( variable2 /*c*/,COLOR_compiling_global___MMLocalClass___declare_tables_to_c))( variable2 /*c*/,  variable0 /*v*/) /*MMLocalClass::declare_tables_to_c*/;
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    /* Register variable[6]: Result */
+    variable[6] = CALL_abstractmetamodel___MMLocalClass___global( variable[5] /*c*/)( variable[5] /*c*/) /*MMLocalClass::global*/;
+    /* Register variable[6]: Result */
+    variable[6] = CALL_abstractmetamodel___MMGlobalClass___module(variable[6])(variable[6]) /*MMGlobalClass::module*/;
+    /* Register variable[6]: Result */
+    variable[6] = TAG_Bool((variable[6] == variable[0]) || ((variable[6] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[6])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[6],variable[0])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[6])(variable[6], variable[0]) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[6])) { /*if*/
+      CALL_compiling_global___MMLocalClass___declare_tables_to_c( variable[5] /*c*/)( variable[5] /*c*/,  variable[1] /*v*/) /*MMLocalClass::declare_tables_to_c*/;
     }
-    continue_41: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
+    continue_49: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ArrayIterator::next*/;
   }
-  break_41: while(0);
+  break_49: while(0);
+  return_label48: while(false);
   tracehead = trace.prev;
   return;
 }
 void compiling_global___MMSrcModule___compile_main_part(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::MMSrcModule::compile_main_part (src/compiling//compiling_global.nit:465,2--490:17)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  static val_t once_value_variable2_43; static int once_bool_variable2_43;
-    val_t variable3;
-    val_t variable4;
-    static val_t once_value_variable4_44; static int once_bool_variable4_44;
-      static val_t once_value_variable4_45; static int once_bool_variable4_45;
-      val_t variable5;
-      val_t variable6;
-      val_t variable7;
-      val_t variable8;
-      val_t variable9;
-      val_t variable10;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = NEW_string___String___with_native(BOX_NativeString("int main(int argc, char **argv) {"), TAG_Int(33)); /*new String*/
-  ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable1) /*CompilerVisitor::add_instr*/;
-  ((compiling_base___CompilerVisitor___indent_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___indent))( variable0 /*v*/) /*CompilerVisitor::indent*/;
-  variable1 = NEW_string___String___with_native(BOX_NativeString("prepare_signals();"), TAG_Int(18)); /*new String*/
-  ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable1) /*CompilerVisitor::add_instr*/;
-  variable1 = NEW_string___String___with_native(BOX_NativeString("glob_argc = argc; glob_argv = argv;"), TAG_Int(35)); /*new String*/
-  ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable1) /*CompilerVisitor::add_instr*/;
-  if (once_bool_variable2_43) variable2 = once_value_variable2_43;
-  else {
-    variable2 = NEW_string___String___with_native(BOX_NativeString("Sys"), TAG_Int(3)); /*new String*/
-    variable2 = ((symbol___String___to_symbol_t)CALL(variable2,COLOR_symbol___String___to_symbol))(variable2) /*String::to_symbol*/;
-    once_value_variable2_43 = variable2;
-    once_bool_variable2_43 = true;
-  }
-  variable1 = variable2;
-  variable2 = ((abstractmetamodel___MMModule___has_global_class_named_t)CALL( self,COLOR_abstractmetamodel___MMModule___has_global_class_named))( self,  variable1 /*sysname*/) /*MMSrcModule::has_global_class_named*/;
-  if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable2)))) { /*if*/
-    variable2 = NEW_string___String___with_native(BOX_NativeString("No main"), TAG_Int(7)); /*new String*/
-    ((file___Object___print_t)CALL( self,COLOR_file___Object___print))( self, variable2) /*MMSrcModule::print*/;
-  } else { /*if*/
-    variable3 = ((abstractmetamodel___MMModule___class_by_name_t)CALL( self,COLOR_abstractmetamodel___MMModule___class_by_name))( self,  variable1 /*sysname*/) /*MMSrcModule::class_by_name*/;
-    variable3 = ((genericity___MMLocalClass___get_type_t)CALL(variable3,COLOR_static_type___MMLocalClass___get_type))(variable3) /*MMLocalClass::get_type*/;
-    variable2 = variable3;
-    if (once_bool_variable4_44) variable4 = once_value_variable4_44;
+  struct trace_t trace = {NULL, NULL, 446, LOCATE_compiling_global___MMSrcModule___compile_main_part};
+  static val_t once_value_51 = NIT_NULL; /* Once value for string variable[3]*/
+  static val_t once_value_52 = NIT_NULL; /* Once value for string variable[3]*/
+  static val_t once_value_53 = NIT_NULL; /* Once value for string variable[3]*/
+  static val_t once_value_54; static int once_bool_54; /* Once value for variable[4]*/
+    static val_t once_value_55 = NIT_NULL; /* Once value for string variable[4]*/
+    static val_t once_value_56 = NIT_NULL; /* Once value for string variable[4]*/
+    static val_t once_value_57; static int once_bool_57; /* Once value for variable[6]*/
+      static val_t once_value_58 = NIT_NULL; /* Once value for string variable[6]*/
+      static val_t once_value_59 = NIT_NULL; /* Once value for string variable[6]*/
+      static val_t once_value_60 = NIT_NULL; /* Once value for string variable[6]*/
+      static val_t once_value_61 = NIT_NULL; /* Once value for string variable[7]*/
+      static val_t once_value_62 = NIT_NULL; /* Once value for string variable[7]*/
+  static val_t once_value_63 = NIT_NULL; /* Once value for string variable[4]*/
+  static val_t once_value_64 = NIT_NULL; /* Once value for string variable[4]*/
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Once String constant */
+  if (once_value_51 != NIT_NULL) variable[3] = once_value_51;
+  else {
+    variable[3] = NEW_String_string___String___with_native(BOX_NativeString("int main(int argc, char **argv) {"), TAG_Int(33)) /*new String*/;
+    once_value_51 = variable[3];
+  }
+  /* Register variable[3]: Result */
+  CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*CompilerVisitor::add_instr*/;
+  CALL_compiling_base___CompilerVisitor___indent( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::indent*/;
+  /* Register variable[3]: Once String constant */
+  if (once_value_52 != NIT_NULL) variable[3] = once_value_52;
+  else {
+    variable[3] = NEW_String_string___String___with_native(BOX_NativeString("prepare_signals();"), TAG_Int(18)) /*new String*/;
+    once_value_52 = variable[3];
+  }
+  /* Register variable[3]: Result */
+  CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*CompilerVisitor::add_instr*/;
+  /* Register variable[3]: Once String constant */
+  if (once_value_53 != NIT_NULL) variable[3] = once_value_53;
+  else {
+    variable[3] = NEW_String_string___String___with_native(BOX_NativeString("glob_argc = argc; glob_argv = argv;"), TAG_Int(35)) /*new String*/;
+    once_value_53 = variable[3];
+  }
+  /* Register variable[3]: Result */
+  CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*CompilerVisitor::add_instr*/;
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Once expression result */
+  if (once_bool_54) variable[4] = once_value_54;
+  else {
+    /* Register variable[4]: Once String constant */
+    if (once_value_55 != NIT_NULL) variable[4] = once_value_55;
+    else {
+      variable[4] = NEW_String_string___String___with_native(BOX_NativeString("Sys"), TAG_Int(3)) /*new String*/;
+      once_value_55 = variable[4];
+    }
+    /* Register variable[4]: Result */
+    /* Register variable[4]: Result */
+    variable[4] = CALL_symbol___String___to_symbol(variable[4])(variable[4]) /*String::to_symbol*/;
+    once_value_54 = variable[4];
+    once_bool_54 = true;
+  }
+  /* Register variable[4]: Result */
+  variable[3] = variable[4];
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstractmetamodel___MMModule___has_global_class_named(variable[0])(variable[0],  variable[3] /*sysname*/) /*MMModule::has_global_class_named*/;
+  if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[4])))) { /*if*/
+    /* Register variable[4]: Once String constant */
+    if (once_value_56 != NIT_NULL) variable[4] = once_value_56;
     else {
-      variable4 = NEW_string___String___with_native(BOX_NativeString("init"), TAG_Int(4)); /*new String*/
-      variable4 = ((symbol___String___to_symbol_t)CALL(variable4,COLOR_symbol___String___to_symbol))(variable4) /*String::to_symbol*/;
-      once_value_variable4_44 = variable4;
-      once_bool_variable4_44 = true;
+      variable[4] = NEW_String_string___String___with_native(BOX_NativeString("No main"), TAG_Int(7)) /*new String*/;
+      once_value_56 = variable[4];
     }
-    variable4 = ((static_type___MMType___select_method_t)CALL( variable2 /*sys*/,COLOR_static_type___MMType___select_method))( variable2 /*sys*/, variable4) /*MMType::select_method*/;
-    variable3 = variable4;
-    variable4 = TAG_Bool(( variable3 /*main*/ ==  NIT_NULL /*null*/) || (( variable3 /*main*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*main*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*main*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*main*/,COLOR_kernel___Object_____eqeq))( variable3 /*main*/,  NIT_NULL /*null*/) /*MMMethod::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      if (once_bool_variable4_45) variable4 = once_value_variable4_45;
+    /* Register variable[4]: Result */
+    CALL_file___Object___print(variable[0])(variable[0], variable[4]) /*Object::print*/;
+  } else { /*if*/
+    /* Register variable[4]: Local variable */
+    /* Register variable[5]: Result */
+    variable[5] = CALL_abstractmetamodel___MMModule___class_by_name(variable[0])(variable[0],  variable[3] /*sysname*/) /*MMModule::class_by_name*/;
+    variable[4] = variable[5];
+    /* Register variable[5]: Local variable */
+    /* Register variable[6]: Once expression result */
+    if (once_bool_57) variable[6] = once_value_57;
+    else {
+      /* Register variable[6]: Once String constant */
+      if (once_value_58 != NIT_NULL) variable[6] = once_value_58;
       else {
-        variable4 = NEW_string___String___with_native(BOX_NativeString("main"), TAG_Int(4)); /*new String*/
-        variable4 = ((symbol___String___to_symbol_t)CALL(variable4,COLOR_symbol___String___to_symbol))(variable4) /*String::to_symbol*/;
-        once_value_variable4_45 = variable4;
-        once_bool_variable4_45 = true;
+        variable[6] = NEW_String_string___String___with_native(BOX_NativeString("main"), TAG_Int(4)) /*new String*/;
+        once_value_58 = variable[6];
       }
-      variable4 = ((static_type___MMType___select_method_t)CALL( variable2 /*sys*/,COLOR_static_type___MMType___select_method))( variable2 /*sys*/, variable4) /*MMType::select_method*/;
-      variable3 = variable4 /*main=*/;
+      /* Register variable[6]: Result */
+      /* Register variable[6]: Result */
+      variable[6] = CALL_symbol___String___to_symbol(variable[6])(variable[6]) /*String::to_symbol*/;
+      once_value_57 = variable[6];
+      once_bool_57 = true;
     }
-    variable4 = TAG_Bool(( variable3 /*main*/ ==  NIT_NULL /*null*/) || (( variable3 /*main*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable3 /*main*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable3 /*main*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable3 /*main*/,COLOR_kernel___Object_____eqeq))( variable3 /*main*/,  NIT_NULL /*null*/) /*MMMethod::==*/)))));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = NEW_string___String___with_native(BOX_NativeString("No main"), TAG_Int(7)); /*new String*/
-      ((file___Object___print_t)CALL( self,COLOR_file___Object___print))( self, variable4) /*MMSrcModule::print*/;
+    /* Register variable[6]: Result */
+    /* Register variable[6]: Result */
+    variable[6] = CALL_abstractmetamodel___MMLocalClass___select_method( variable[4] /*sys*/)( variable[4] /*sys*/, variable[6]) /*MMLocalClass::select_method*/;
+    variable[5] = variable[6];
+    /* Register variable[6]: Result */
+    variable[6] = TAG_Bool(( variable[5] /*mainm*/ ==  NIT_NULL /*null*/) || (( variable[5] /*mainm*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[5] /*mainm*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[5] /*mainm*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[5] /*mainm*/)( variable[5] /*mainm*/,  NIT_NULL /*null*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[6])) { /*if*/
+      /* Register variable[6]: Once String constant */
+      if (once_value_59 != NIT_NULL) variable[6] = once_value_59;
+      else {
+        variable[6] = NEW_String_string___String___with_native(BOX_NativeString("No main"), TAG_Int(7)) /*new String*/;
+        once_value_59 = variable[6];
+      }
+      /* Register variable[6]: Result */
+      CALL_file___Object___print(variable[0])(variable[0], variable[6]) /*Object::print*/;
     } else { /*if*/
-      variable4 = NEW_string___String___with_native(BOX_NativeString("G_sys = NEW_Sys();"), TAG_Int(18)); /*new String*/
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable4) /*CompilerVisitor::add_instr*/;
-      variable4 = NEW_string___String___init(); /*new String*/
-      variable5 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-      variable6 = variable5;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable6) /*String::append*/;
-      variable7 = ((compiling_base___MMLocalProperty___cname_t)CALL( variable3 /*main*/,COLOR_compiling_base___MMLocalProperty___cname))( variable3 /*main*/) /*MMMethod::cname*/;
-      variable8 = variable7;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable8) /*String::append*/;
-      variable9 = NEW_string___String___with_native(BOX_NativeString("(G_sys);"), TAG_Int(8)); /*new String*/
-      variable10 = variable9;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable10) /*String::append*/;
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable4) /*CompilerVisitor::add_instr*/;
+      /* Register variable[6]: Once String constant */
+      if (once_value_60 != NIT_NULL) variable[6] = once_value_60;
+      else {
+        variable[6] = NEW_String_string___String___with_native(BOX_NativeString("G_sys = NEW_Sys();"), TAG_Int(18)) /*new String*/;
+        once_value_60 = variable[6];
+      }
+      /* Register variable[6]: Result */
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[6]) /*CompilerVisitor::add_instr*/;
+      variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+      /* Register variable[7]: Once String constant */
+      if (once_value_61 != NIT_NULL) variable[7] = once_value_61;
+      else {
+        variable[7] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+        once_value_61 = variable[7];
+      }
+      /* Register variable[7]: Result */
+      /* Ensure var variable[7]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      /* Register variable[7]: Result */
+      variable[7] = CALL_compiling_base___MMLocalProperty___cname( variable[5] /*mainm*/)( variable[5] /*mainm*/) /*MMLocalProperty::cname*/;
+      /* Ensure var variable[7]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      /* Register variable[7]: Once String constant */
+      if (once_value_62 != NIT_NULL) variable[7] = once_value_62;
+      else {
+        variable[7] = NEW_String_string___String___with_native(BOX_NativeString("(G_sys);"), TAG_Int(8)) /*new String*/;
+        once_value_62 = variable[7];
+      }
+      /* Register variable[7]: Result */
+      /* Ensure var variable[7]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      /* Register variable[6]: Result */
+      variable[6] = CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/;
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[6]) /*CompilerVisitor::add_instr*/;
     }
   }
-  variable2 = NEW_string___String___with_native(BOX_NativeString("return 0;"), TAG_Int(9)); /*new String*/
-  ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable2) /*CompilerVisitor::add_instr*/;
-  ((compiling_base___CompilerVisitor___unindent_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___unindent))( variable0 /*v*/) /*CompilerVisitor::unindent*/;
-  variable2 = NEW_string___String___with_native(BOX_NativeString("}"), TAG_Int(1)); /*new String*/
-  ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable2) /*CompilerVisitor::add_instr*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_63 != NIT_NULL) variable[4] = once_value_63;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString("return 0;"), TAG_Int(9)) /*new String*/;
+    once_value_63 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*CompilerVisitor::add_instr*/;
+  CALL_compiling_base___CompilerVisitor___unindent( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::unindent*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_64 != NIT_NULL) variable[4] = once_value_64;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString("}"), TAG_Int(1)) /*new String*/;
+    once_value_64 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*CompilerVisitor::add_instr*/;
+  return_label50: while(false);
   tracehead = trace.prev;
   return;
 }
 void compiling_global___MMSrcModule___compile_mod_to_c(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::MMSrcModule::compile_mod_to_c (src/compiling//compiling_global.nit:493,2--522:29)"};
-  val_t variable0;
-  val_t variable1;
-    val_t variable2;
-    val_t variable3;
-    val_t variable4;
-    val_t variable5;
-    val_t variable6;
-    val_t variable7;
-      val_t variable8;
-      val_t variable9;
-      val_t variable10;
-      val_t variable11;
-      val_t variable12;
-      val_t variable13;
-      val_t variable14;
-      val_t variable15;
-      val_t variable16;
-      val_t variable17;
-          val_t variable18;
-          val_t variable19;
-          val_t variable20;
-          val_t variable21;
-          val_t variable22;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ((compiling_base___CompilerVisitor___tc_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___tc))( variable0 /*v*/) /*CompilerVisitor::tc*/;
-  variable1 = ((compiling_base___ToolContext___global_t)CALL(variable1,COLOR_compiling_base___ToolContext___global))(variable1) /*ToolContext::global*/;
-  if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable1)))) { /*if*/
-    variable1 = NEW_string___String___init(); /*new String*/
-    variable2 = NEW_string___String___with_native(BOX_NativeString("extern const int SFT_"), TAG_Int(21)); /*new String*/
-    variable3 = variable2;
-    ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable3) /*String::append*/;
-    variable4 = ((abstractmetamodel___MMModule___name_t)CALL( self,COLOR_abstractmetamodel___MMModule___name))( self) /*MMSrcModule::name*/;
-    variable5 = variable4;
-    variable5 = ((string___String___to_s_t)CALL(variable5,COLOR_string___Object___to_s))(variable5) /*String::to_s*/;
-    ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable5) /*String::append*/;
-    variable6 = NEW_string___String___with_native(BOX_NativeString("[];"), TAG_Int(3)); /*new String*/
-    variable7 = variable6;
-    ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable7) /*String::append*/;
-    ((compiling_base___CompilerVisitor___add_decl_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_decl))( variable0 /*v*/, variable1) /*CompilerVisitor::add_decl*/;
-  }
-  variable1 =  TAG_Int(0);
-  variable2 = ATTR_compiling_global___MMSrcModule____local_table( self) /*MMSrcModule::_local_table*/;
-  variable2 = ((array___AbstractArray___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Array::iterator*/;
+  struct trace_t trace = {NULL, NULL, 473, LOCATE_compiling_global___MMSrcModule___compile_mod_to_c};
+  static val_t once_value_66 = NIT_NULL; /* Once value for string variable[4]*/
+  static val_t once_value_67 = NIT_NULL; /* Once value for string variable[4]*/
+    static val_t once_value_68 = NIT_NULL; /* Once value for string variable[4]*/
+    static val_t once_value_69 = NIT_NULL; /* Once value for string variable[4]*/
+      static val_t once_value_71 = NIT_NULL; /* Once value for string variable[9]*/
+      static val_t once_value_72 = NIT_NULL; /* Once value for string variable[9]*/
+      static val_t once_value_73 = NIT_NULL; /* Once value for string variable[9]*/
+      static val_t once_value_74 = NIT_NULL; /* Once value for string variable[9]*/
+      static val_t once_value_75 = NIT_NULL; /* Once value for string variable[9]*/
+          static val_t once_value_79 = NIT_NULL; /* Once value for string variable[16]*/
+          static val_t once_value_80 = NIT_NULL; /* Once value for string variable[16]*/
+        static val_t once_value_81 = NIT_NULL; /* Once value for string variable[13]*/
+        static val_t once_value_82 = NIT_NULL; /* Once value for string variable[13]*/
+        static val_t once_value_83 = NIT_NULL; /* Once value for string variable[13]*/
+        static val_t once_value_84 = NIT_NULL; /* Once value for string variable[13]*/
+        static val_t once_value_85 = NIT_NULL; /* Once value for string variable[13]*/
+  val_t variable[17];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_66 != NIT_NULL) variable[4] = once_value_66;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString("extern const char *LOCATE_"), TAG_Int(26)) /*new String*/;
+    once_value_66 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstractmetamodel___MMModule___name(variable[0])(variable[0]) /*MMModule::name*/;
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_67 != NIT_NULL) variable[4] = once_value_67;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString(";"), TAG_Int(1)) /*new String*/;
+    once_value_67 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
+  CALL_compiling_base___CompilerVisitor___add_decl( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*CompilerVisitor::add_decl*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_compiling_base___CompilerVisitor___tc( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::tc*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_compiling_base___ToolContext___global(variable[3])(variable[3]) /*ToolContext::global*/;
+  if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[3])))) { /*if*/
+    variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+    /* Register variable[4]: Once String constant */
+    if (once_value_68 != NIT_NULL) variable[4] = once_value_68;
+    else {
+      variable[4] = NEW_String_string___String___with_native(BOX_NativeString("extern const int SFT_"), TAG_Int(21)) /*new String*/;
+      once_value_68 = variable[4];
+    }
+    /* Register variable[4]: Result */
+    /* Ensure var variable[4]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstractmetamodel___MMModule___name(variable[0])(variable[0]) /*MMModule::name*/;
+    /* Ensure var variable[4]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
+    /* Register variable[4]: Once String constant */
+    if (once_value_69 != NIT_NULL) variable[4] = once_value_69;
+    else {
+      variable[4] = NEW_String_string___String___with_native(BOX_NativeString("[];"), TAG_Int(3)) /*new String*/;
+      once_value_69 = variable[4];
+    }
+    /* Register variable[4]: Result */
+    /* Ensure var variable[4]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+    /* Register variable[3]: Result */
+    variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
+    CALL_compiling_base___CompilerVisitor___add_decl( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*CompilerVisitor::add_decl*/;
+  }
+  /* Register variable[3]: Local variable */
+  variable[3] =  TAG_Int(0);
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_compiling_global___MMSrcModule____local_table(variable[0]) /*MMSrcModule::_local_table*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*AbstractArrayRead::iterator*/;
   while (true) { /*for*/
-    variable3 = ((array___ArrayIterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((array___ArrayIterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*ArrayIterator::item*/;
-    variable4 = ((compiling_base___CompilerVisitor___tc_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___tc))( variable0 /*v*/) /*CompilerVisitor::tc*/;
-    variable4 = ((compiling_base___ToolContext___global_t)CALL(variable4,COLOR_compiling_base___ToolContext___global))(variable4) /*ToolContext::global*/;
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = NEW_string___String___init(); /*new String*/
-      variable5 = NEW_string___String___with_native(BOX_NativeString("#define "), TAG_Int(8)); /*new String*/
-      variable6 = variable5;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable6) /*String::append*/;
-      variable7 = ((compiling_global___LocalTableElt___symbol_t)CALL( variable3 /*e*/,COLOR_compiling_global___LocalTableElt___symbol))( variable3 /*e*/) /*LocalTableElt::symbol*/;
-      variable8 = variable7;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable8) /*String::append*/;
-      variable9 = NEW_string___String___with_native(BOX_NativeString(" "), TAG_Int(1)); /*new String*/
-      variable10 = variable9;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable10) /*String::append*/;
-      variable11 = ((compiling_global___CompilerVisitor___global_analysis_t)CALL( variable0 /*v*/,COLOR_compiling_global___CompilerVisitor___global_analysis))( variable0 /*v*/) /*CompilerVisitor::global_analysis*/;
-      variable11 = ((compiling_global___LocalTableElt___value_t)CALL( variable3 /*e*/,COLOR_compiling_global___LocalTableElt___value))( variable3 /*e*/, variable11) /*LocalTableElt::value*/;
-      variable12 = variable11;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable12) /*String::append*/;
-      variable13 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-      variable14 = variable13;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable14) /*String::append*/;
-      ((compiling_base___CompilerVisitor___add_decl_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_decl))( variable0 /*v*/, variable4) /*CompilerVisitor::add_decl*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Local variable */
+    /*variable[7] is variable value*/
+    /* Register variable[8]: Result */
+    variable[8] = CALL_compiling_base___CompilerVisitor___tc( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::tc*/;
+    /* Register variable[8]: Result */
+    variable[8] = CALL_compiling_base___ToolContext___global(variable[8])(variable[8]) /*ToolContext::global*/;
+    if (UNTAG_Bool(variable[8])) { /*if*/
+      variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+      /* Register variable[9]: Once String constant */
+      if (once_value_71 != NIT_NULL) variable[9] = once_value_71;
+      else {
+        variable[9] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+        once_value_71 = variable[9];
+      }
+      /* Register variable[9]: Result */
+      /* Ensure var variable[9]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
+      /* Register variable[9]: Result */
+      variable[9] = CALL_compiling_global___GlobalCompilerVisitor___global_analysis( variable[1] /*v*/)( variable[1] /*v*/) /*GlobalCompilerVisitor::global_analysis*/;
+      /* Register variable[9]: Result */
+      variable[9] = CALL_compiling_global___ModuleTableElt___value( variable[6] /*e*/)( variable[6] /*e*/, variable[9]) /*ModuleTableElt::value*/;
+      /* Ensure var variable[9]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
+      /* Register variable[9]: Once String constant */
+      if (once_value_72 != NIT_NULL) variable[9] = once_value_72;
+      else {
+        variable[9] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+        once_value_72 = variable[9];
+      }
+      /* Register variable[9]: Result */
+      /* Ensure var variable[9]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
+      /* Register variable[8]: Result */
+      variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
+      variable[7] = variable[8] /*value=*/;
     } else { /*if*/
-      variable4 = NEW_string___String___init(); /*new String*/
-      variable5 = NEW_string___String___with_native(BOX_NativeString("#define "), TAG_Int(8)); /*new String*/
-      variable6 = variable5;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable6) /*String::append*/;
-      variable7 = ((compiling_global___LocalTableElt___symbol_t)CALL( variable3 /*e*/,COLOR_compiling_global___LocalTableElt___symbol))( variable3 /*e*/) /*LocalTableElt::symbol*/;
-      variable8 = variable7;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable8) /*String::append*/;
-      variable9 = NEW_string___String___with_native(BOX_NativeString(" SFT_"), TAG_Int(5)); /*new String*/
-      variable10 = variable9;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable10) /*String::append*/;
-      variable11 = ((abstractmetamodel___MMModule___name_t)CALL( self,COLOR_abstractmetamodel___MMModule___name))( self) /*MMSrcModule::name*/;
-      variable12 = variable11;
-      variable12 = ((string___String___to_s_t)CALL(variable12,COLOR_string___Object___to_s))(variable12) /*String::to_s*/;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable12) /*String::append*/;
-      variable13 = NEW_string___String___with_native(BOX_NativeString("["), TAG_Int(1)); /*new String*/
-      variable14 = variable13;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable14) /*String::append*/;
-      variable15 =  variable1 /*i*/;
-      variable15 = ((string___String___to_s_t)CALL(variable15,COLOR_string___Object___to_s))(variable15) /*String::to_s*/;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable15) /*String::append*/;
-      variable16 = NEW_string___String___with_native(BOX_NativeString("]"), TAG_Int(1)); /*new String*/
-      variable17 = variable16;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable17) /*String::append*/;
-      ((compiling_base___CompilerVisitor___add_decl_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_decl))( variable0 /*v*/, variable4) /*CompilerVisitor::add_decl*/;
-      variable4 = TAG_Int(UNTAG_Int( variable1 /*i*/)+UNTAG_Int( TAG_Int(1)));
-      variable1 = variable4 /*i=*/;
+      variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+      /* Register variable[9]: Once String constant */
+      if (once_value_73 != NIT_NULL) variable[9] = once_value_73;
+      else {
+        variable[9] = NEW_String_string___String___with_native(BOX_NativeString("SFT_"), TAG_Int(4)) /*new String*/;
+        once_value_73 = variable[9];
+      }
+      /* Register variable[9]: Result */
+      /* Ensure var variable[9]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
+      /* Register variable[9]: Result */
+      variable[9] = CALL_abstractmetamodel___MMModule___name(variable[0])(variable[0]) /*MMModule::name*/;
+      /* Ensure var variable[9]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
+      /* Register variable[9]: Once String constant */
+      if (once_value_74 != NIT_NULL) variable[9] = once_value_74;
+      else {
+        variable[9] = NEW_String_string___String___with_native(BOX_NativeString("["), TAG_Int(1)) /*new String*/;
+        once_value_74 = variable[9];
+      }
+      /* Register variable[9]: Result */
+      /* Ensure var variable[9]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
+      variable[9] =  variable[3] /*i*/ /* Ensure var: super-string element*/;
+      CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
+      /* Register variable[9]: Once String constant */
+      if (once_value_75 != NIT_NULL) variable[9] = once_value_75;
+      else {
+        variable[9] = NEW_String_string___String___with_native(BOX_NativeString("]"), TAG_Int(1)) /*new String*/;
+        once_value_75 = variable[9];
+      }
+      /* Register variable[9]: Result */
+      /* Ensure var variable[9]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
+      /* Register variable[8]: Result */
+      variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
+      variable[7] = variable[8] /*value=*/;
+      /* Register variable[8]: Result */
+      variable[8] = TAG_Int(UNTAG_Int( variable[3] /*i*/)+UNTAG_Int( TAG_Int(1)));
+      variable[3] = variable[8] /*i=*/;
     }
-    continue_47: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*ArrayIterator::next*/;
+    CALL_compiling_global___AbsTableElt___compile_macros( variable[6] /*e*/)( variable[6] /*e*/,  variable[1] /*v*/,  variable[7] /*value*/) /*AbsTableElt::compile_macros*/;
+    continue_70: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*ArrayIterator::next*/;
   }
-  break_47: while(0);
-  variable2 = ((syntax_base___MMSrcModule___src_local_classes_t)CALL( self,COLOR_syntax_base___MMSrcModule___src_local_classes))( self) /*MMSrcModule::src_local_classes*/;
-  variable2 = ((abstract_collection___Map___iterator_t)CALL(variable2,COLOR_abstract_collection___Collection___iterator))(variable2) /*Map::iterator*/;
+  break_70: while(0);
+  /* Register variable[4]: Result */
+  variable[4] = CALL_syntax_base___MMSrcModule___src_local_classes(variable[0])(variable[0]) /*MMSrcModule::src_local_classes*/;
+  /* Register variable[4]: For iterator */
+  variable[4] = CALL_abstract_collection___Collection___iterator(variable[4])(variable[4]) /*MapRead::iterator*/;
   while (true) { /*for*/
-    variable3 = ((abstract_collection___Iterator___is_ok_t)CALL(variable2,COLOR_abstract_collection___Iterator___is_ok))(variable2) /*MapIterator::is_ok*/;
-    if (!UNTAG_Bool(variable3)) break; /*for*/
-    variable3 = ((abstract_collection___Iterator___item_t)CALL(variable2,COLOR_abstract_collection___Iterator___item))(variable2) /*MapIterator::item*/;
-    variable4 = ((syntax_base___MMSrcLocalClass___src_local_properties_t)CALL( variable3 /*c*/,COLOR_syntax_base___MMSrcLocalClass___src_local_properties))( variable3 /*c*/) /*MMSrcLocalClass::src_local_properties*/;
-    variable4 = ((abstract_collection___Map___iterator_t)CALL(variable4,COLOR_abstract_collection___Collection___iterator))(variable4) /*Map::iterator*/;
+    /* Register variable[5]: For 'is_ok' result */
+    variable[5] = CALL_abstract_collection___Iterator___is_ok(variable[4])(variable[4]) /*Iterator::is_ok*/;
+    if (!UNTAG_Bool(variable[5])) break; /*for*/
+    variable[5] = CALL_abstract_collection___Iterator___item(variable[4])(variable[4]) /*Iterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[6]: Local variable */
+    variable[6] = variable[5];
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstractmetamodel___MMLocalClass___global_properties( variable[6] /*c*/)( variable[6] /*c*/) /*MMLocalClass::global_properties*/;
+    /* Register variable[7]: For iterator */
+    variable[7] = CALL_abstract_collection___Collection___iterator(variable[7])(variable[7]) /*Collection::iterator*/;
     while (true) { /*for*/
-      variable5 = ((abstract_collection___Iterator___is_ok_t)CALL(variable4,COLOR_abstract_collection___Iterator___is_ok))(variable4) /*MapIterator::is_ok*/;
-      if (!UNTAG_Bool(variable5)) break; /*for*/
-      variable5 = ((abstract_collection___Iterator___item_t)CALL(variable4,COLOR_abstract_collection___Iterator___item))(variable4) /*MapIterator::item*/;
-      variable7 = ((abstractmetamodel___MMLocalProperty___global_t)CALL( variable5 /*p*/,COLOR_abstractmetamodel___MMLocalProperty___global))( variable5 /*p*/) /*MMSrcLocalProperty::global*/;
-      variable6 = variable7;
-      variable7 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL( variable6 /*pg*/,COLOR_abstractmetamodel___MMGlobalProperty___intro))( variable6 /*pg*/) /*MMGlobalProperty::intro*/;
-      variable7 = TAG_Bool((variable7 ==  variable5 /*p*/) || ((variable7 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable7,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable7, variable5 /*p*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable7,COLOR_kernel___Object_____eqeq))(variable7,  variable5 /*p*/) /*MMConcreteProperty::==*/)))));
-      variable8 = variable7;
-      if (UNTAG_Bool(variable8)) { /* and */
-        variable8 = TAG_Bool(( variable5 /*p*/==NIT_NULL) || VAL_ISA( variable5 /*p*/, COLOR_MMAttribute, ID_MMAttribute)) /*cast MMAttribute*/;
-      }
-      variable7 = variable8;
-      if (UNTAG_Bool(variable7)) { /*if*/
-        variable7 = ((compiling_base___CompilerVisitor___tc_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___tc))( variable0 /*v*/) /*CompilerVisitor::tc*/;
-        variable7 = ((compiling_base___ToolContext___attr_sim_t)CALL(variable7,COLOR_compiling_base___ToolContext___attr_sim))(variable7) /*ToolContext::attr_sim*/;
-        if (UNTAG_Bool(variable7)) { /*if*/
-          variable8 = ((abstractmetamodel___MMGlobalProperty___local_class_t)CALL( variable6 /*pg*/,COLOR_abstractmetamodel___MMGlobalProperty___local_class))( variable6 /*pg*/) /*MMGlobalProperty::local_class*/;
-          variable7 = variable8;
-          variable8 = TAG_Bool(( variable7 /*bc*/==NIT_NULL) || VAL_ISA( variable7 /*bc*/, COLOR_MMSrcLocalClass, ID_MMSrcLocalClass)) /*cast MMSrcLocalClass*/;
-          if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert failed: src/compiling//compiling_global.nit:514,7--35\n"); nit_exit(1);}
-          variable9 = ((compiling_global___MMSrcLocalClass___base_attr_pos_t)CALL( variable7 /*bc*/,COLOR_compiling_global___MMSrcLocalClass___base_attr_pos))( variable7 /*bc*/) /*MMSrcLocalClass::base_attr_pos*/;
-          variable9 = ((compiling_global___TableEltBaseAttrPos___symbol_t)CALL(variable9,COLOR_compiling_global___LocalTableElt___symbol))(variable9) /*TableEltBaseAttrPos::symbol*/;
-          variable8 = variable9;
-          variable9 = NEW_string___String___init(); /*new String*/
-          variable10 = NEW_string___String___with_native(BOX_NativeString("#define "), TAG_Int(8)); /*new String*/
-          variable11 = variable10;
-          ((string___String___append_t)CALL(variable9,COLOR_abstract_collection___IndexedCollection___append))(variable9, variable11) /*String::append*/;
-          variable12 = ((compiling_base___MMGlobalProperty___attr_access_t)CALL( variable6 /*pg*/,COLOR_compiling_base___MMGlobalProperty___attr_access))( variable6 /*pg*/) /*MMGlobalProperty::attr_access*/;
-          variable13 = variable12;
-          ((string___String___append_t)CALL(variable9,COLOR_abstract_collection___IndexedCollection___append))(variable9, variable13) /*String::append*/;
-          variable14 = NEW_string___String___with_native(BOX_NativeString("(recv) ATTRS(recv, "), TAG_Int(19)); /*new String*/
-          variable15 = variable14;
-          ((string___String___append_t)CALL(variable9,COLOR_abstract_collection___IndexedCollection___append))(variable9, variable15) /*String::append*/;
-          variable16 =  variable8 /*s*/;
-          ((string___String___append_t)CALL(variable9,COLOR_abstract_collection___IndexedCollection___append))(variable9, variable16) /*String::append*/;
-          variable17 = NEW_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)); /*new String*/
-          variable18 = variable17;
-          ((string___String___append_t)CALL(variable9,COLOR_abstract_collection___IndexedCollection___append))(variable9, variable18) /*String::append*/;
-          variable19 = ((compiling_global___MMGlobalProperty___pos_of_t)CALL( variable6 /*pg*/,COLOR_compiling_global___MMGlobalProperty___pos_of))( variable6 /*pg*/) /*MMGlobalProperty::pos_of*/;
-          variable20 = variable19;
-          variable20 = ((string___String___to_s_t)CALL(variable20,COLOR_string___Object___to_s))(variable20) /*String::to_s*/;
-          ((string___String___append_t)CALL(variable9,COLOR_abstract_collection___IndexedCollection___append))(variable9, variable20) /*String::append*/;
-          variable21 = NEW_string___String___with_native(BOX_NativeString(")"), TAG_Int(1)); /*new String*/
-          variable22 = variable21;
-          ((string___String___append_t)CALL(variable9,COLOR_abstract_collection___IndexedCollection___append))(variable9, variable22) /*String::append*/;
-          ((compiling_base___CompilerVisitor___add_decl_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_decl))( variable0 /*v*/, variable9) /*CompilerVisitor::add_decl*/;
-        } else { /*if*/
-          variable7 = NEW_string___String___init(); /*new String*/
-          variable8 = NEW_string___String___with_native(BOX_NativeString("#define "), TAG_Int(8)); /*new String*/
-          variable9 = variable8;
-          ((string___String___append_t)CALL(variable7,COLOR_abstract_collection___IndexedCollection___append))(variable7, variable9) /*String::append*/;
-          variable10 = ((compiling_base___MMGlobalProperty___attr_access_t)CALL( variable6 /*pg*/,COLOR_compiling_base___MMGlobalProperty___attr_access))( variable6 /*pg*/) /*MMGlobalProperty::attr_access*/;
-          variable11 = variable10;
-          ((string___String___append_t)CALL(variable7,COLOR_abstract_collection___IndexedCollection___append))(variable7, variable11) /*String::append*/;
-          variable12 = NEW_string___String___with_native(BOX_NativeString("(recv) ATTR(recv, "), TAG_Int(18)); /*new String*/
-          variable13 = variable12;
-          ((string___String___append_t)CALL(variable7,COLOR_abstract_collection___IndexedCollection___append))(variable7, variable13) /*String::append*/;
-          variable14 = ((compiling_base___MMGlobalProperty___color_id_t)CALL( variable6 /*pg*/,COLOR_compiling_base___MMGlobalProperty___color_id))( variable6 /*pg*/) /*MMGlobalProperty::color_id*/;
-          variable15 = variable14;
-          ((string___String___append_t)CALL(variable7,COLOR_abstract_collection___IndexedCollection___append))(variable7, variable15) /*String::append*/;
-          variable16 = NEW_string___String___with_native(BOX_NativeString(")"), TAG_Int(1)); /*new String*/
-          variable17 = variable16;
-          ((string___String___append_t)CALL(variable7,COLOR_abstract_collection___IndexedCollection___append))(variable7, variable17) /*String::append*/;
-          ((compiling_base___CompilerVisitor___add_decl_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_decl))( variable0 /*v*/, variable7) /*CompilerVisitor::add_decl*/;
+      /* Register variable[8]: For 'is_ok' result */
+      variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*Iterator::is_ok*/;
+      if (!UNTAG_Bool(variable[8])) break; /*for*/
+      variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*Iterator::item*/ /* Ensure var: For item*/;
+      /* Register variable[9]: Local variable */
+      variable[9] = variable[8];
+      /* Register variable[10]: Local variable */
+      /* Register variable[11]: Result */
+      variable[11] = CALL_abstractmetamodel___MMLocalClass_____bra( variable[6] /*c*/)( variable[6] /*c*/,  variable[9] /*pg*/) /*MMLocalClass::[]*/;
+      variable[10] = variable[11];
+      /* Register variable[11]: Result */
+      variable[11] = CALL_abstractmetamodel___MMLocalProperty___local_class( variable[10] /*p*/)( variable[10] /*p*/) /*MMLocalProperty::local_class*/;
+      /* Register variable[11]: Result */
+      variable[11] = TAG_Bool((variable[11] ==  variable[6] /*c*/) || ((variable[11] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[11])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[11], variable[6] /*c*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[11])(variable[11],  variable[6] /*c*/) /*Object::==*/)))));
+      if (UNTAG_Bool(variable[11])) { /*if*/
+        CALL_compiling_methods___MMLocalProperty___compile_property_to_c( variable[10] /*p*/)( variable[10] /*p*/,  variable[1] /*v*/) /*MMLocalProperty::compile_property_to_c*/;
+      }
+      /* Register variable[11]: Result */
+      variable[11] = CALL_abstractmetamodel___MMGlobalProperty___is_init_for( variable[9] /*pg*/)( variable[9] /*pg*/,  variable[6] /*c*/) /*MMGlobalProperty::is_init_for*/;
+      if (UNTAG_Bool(variable[11])) { /*if*/
+        /* Register variable[11]: Local variable */
+        /* Register variable[12]: Result */
+        variable[12] = NEW_Array_array___Array___init() /*new Array[String]*/;
+        variable[11] = variable[12];
+        /* Register variable[12]: Result */
+        variable[12] = CALL_static_type___MMLocalProperty___signature( variable[10] /*p*/)( variable[10] /*p*/) /*MMLocalProperty::signature*/;
+        /* Register variable[12]: Result */
+        variable[12] = CALL_static_type___MMSignature___arity(variable[12])(variable[12]) /*MMSignature::arity*/;
+        /* Register variable[12]: Result */
+        variable[12] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[12]) /*new Range[Int]*/;
+        /* Register variable[12]: For iterator */
+        variable[12] = CALL_abstract_collection___Collection___iterator(variable[12])(variable[12]) /*Range::iterator*/;
+        while (true) { /*for*/
+          /* Register variable[13]: For 'is_ok' result */
+          variable[13] = CALL_abstract_collection___Iterator___is_ok(variable[12])(variable[12]) /*Iterator::is_ok*/;
+          if (!UNTAG_Bool(variable[13])) break; /*for*/
+          variable[13] = CALL_abstract_collection___Iterator___item(variable[12])(variable[12]) /*Iterator::item*/ /* Ensure var: For item*/;
+          /* Register variable[14]: Local variable */
+          variable[14] = variable[13];
+          variable[15] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+          /* Register variable[16]: Once String constant */
+          if (once_value_79 != NIT_NULL) variable[16] = once_value_79;
+          else {
+            variable[16] = NEW_String_string___String___with_native(BOX_NativeString("val_t p"), TAG_Int(7)) /*new String*/;
+            once_value_79 = variable[16];
+          }
+          /* Register variable[16]: Result */
+          /* Ensure var variable[16]: super-string element*/
+          CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[16]) /*AbstractArray::add*/;
+          variable[16] =  variable[14] /*i*/ /* Ensure var: super-string element*/;
+          CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], CALL_string___Object___to_s(variable[16])(variable[16]) /*Object::to_s*/) /*AbstractArray::add*/;
+          /* Register variable[16]: Once String constant */
+          if (once_value_80 != NIT_NULL) variable[16] = once_value_80;
+          else {
+            variable[16] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+            once_value_80 = variable[16];
+          }
+          /* Register variable[16]: Result */
+          /* Ensure var variable[16]: super-string element*/
+          CALL_abstract_collection___SimpleCollection___add(variable[15])(variable[15], variable[16]) /*AbstractArray::add*/;
+          /* Register variable[15]: Result */
+          variable[15] = CALL_string___Object___to_s(variable[15])(variable[15]) /*Object::to_s*/;
+          CALL_abstract_collection___SimpleCollection___add( variable[11] /*params*/)( variable[11] /*params*/, variable[15]) /*AbstractArray::add*/;
+          continue_78: while(0);
+          CALL_abstract_collection___Iterator___next(variable[12])(variable[12]) /*Iterator::next*/;
+        }
+        break_78: while(0);
+        variable[12] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+        /* Register variable[13]: Once String constant */
+        if (once_value_81 != NIT_NULL) variable[13] = once_value_81;
+        else {
+          variable[13] = NEW_String_string___String___with_native(BOX_NativeString("val_t NEW_"), TAG_Int(10)) /*new String*/;
+          once_value_81 = variable[13];
+        }
+        /* Register variable[13]: Result */
+        /* Ensure var variable[13]: super-string element*/
+        CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[13]) /*AbstractArray::add*/;
+        variable[13] =  variable[6] /*c*/ /* Ensure var: super-string element*/;
+        CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/) /*AbstractArray::add*/;
+        /* Register variable[13]: Once String constant */
+        if (once_value_82 != NIT_NULL) variable[13] = once_value_82;
+        else {
+          variable[13] = NEW_String_string___String___with_native(BOX_NativeString("_"), TAG_Int(1)) /*new String*/;
+          once_value_82 = variable[13];
         }
+        /* Register variable[13]: Result */
+        /* Ensure var variable[13]: super-string element*/
+        CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[13]) /*AbstractArray::add*/;
+        /* Register variable[13]: Result */
+        variable[13] = CALL_abstractmetamodel___MMLocalProperty___global( variable[10] /*p*/)( variable[10] /*p*/) /*MMLocalProperty::global*/;
+        /* Register variable[13]: Result */
+        variable[13] = CALL_abstractmetamodel___MMGlobalProperty___intro(variable[13])(variable[13]) /*MMGlobalProperty::intro*/;
+        /* Register variable[13]: Result */
+        variable[13] = CALL_compiling_base___MMLocalProperty___cname(variable[13])(variable[13]) /*MMLocalProperty::cname*/;
+        /* Ensure var variable[13]: super-string element*/
+        CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[13]) /*AbstractArray::add*/;
+        /* Register variable[13]: Once String constant */
+        if (once_value_83 != NIT_NULL) variable[13] = once_value_83;
+        else {
+          variable[13] = NEW_String_string___String___with_native(BOX_NativeString("("), TAG_Int(1)) /*new String*/;
+          once_value_83 = variable[13];
+        }
+        /* Register variable[13]: Result */
+        /* Ensure var variable[13]: super-string element*/
+        CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[13]) /*AbstractArray::add*/;
+        /* Register variable[13]: Once String constant */
+        if (once_value_84 != NIT_NULL) variable[13] = once_value_84;
+        else {
+          variable[13] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)) /*new String*/;
+          once_value_84 = variable[13];
+        }
+        /* Register variable[13]: Result */
+        /* Register variable[13]: Result */
+        variable[13] = CALL_string___Collection___join( variable[11] /*params*/)( variable[11] /*params*/, variable[13]) /*Collection::join*/;
+        /* Ensure var variable[13]: super-string element*/
+        CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[13]) /*AbstractArray::add*/;
+        /* Register variable[13]: Once String constant */
+        if (once_value_85 != NIT_NULL) variable[13] = once_value_85;
+        else {
+          variable[13] = NEW_String_string___String___with_native(BOX_NativeString(");"), TAG_Int(2)) /*new String*/;
+          once_value_85 = variable[13];
+        }
+        /* Register variable[13]: Result */
+        /* Ensure var variable[13]: super-string element*/
+        CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[13]) /*AbstractArray::add*/;
+        /* Register variable[12]: Result */
+        variable[12] = CALL_string___Object___to_s(variable[12])(variable[12]) /*Object::to_s*/;
+        CALL_compiling_base___CompilerVisitor___add_decl( variable[1] /*v*/)( variable[1] /*v*/, variable[12]) /*CompilerVisitor::add_decl*/;
       }
-      variable7 = TAG_Bool(( variable5 /*p*/==NIT_NULL) || VAL_ISA( variable5 /*p*/, COLOR_MMSrcLocalProperty, ID_MMSrcLocalProperty)) /*cast MMSrcLocalProperty*/;
-      if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert failed: src/compiling//compiling_global.nit:521,5--35\n"); nit_exit(1);}
-      ((compiling_methods___MMSrcLocalProperty___compile_property_to_c_t)CALL( variable5 /*p*/,COLOR_compiling_methods___MMSrcLocalProperty___compile_property_to_c))( variable5 /*p*/,  variable0 /*v*/) /*MMSrcLocalProperty::compile_property_to_c*/;
-      continue_49: while(0);
-      ((abstract_collection___Iterator___next_t)CALL(variable4,COLOR_abstract_collection___Iterator___next))(variable4) /*MapIterator::next*/;
+      continue_77: while(0);
+      CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*Iterator::next*/;
     }
-    break_49: while(0);
-    continue_48: while(0);
-    ((abstract_collection___Iterator___next_t)CALL(variable2,COLOR_abstract_collection___Iterator___next))(variable2) /*MapIterator::next*/;
+    break_77: while(0);
+    continue_76: while(0);
+    CALL_abstract_collection___Iterator___next(variable[4])(variable[4]) /*Iterator::next*/;
   }
-  break_48: while(0);
+  break_76: while(0);
+  return_label65: while(false);
   tracehead = trace.prev;
   return;
 }
 void compiling_global___MMSrcModule___compile_local_table_to_c(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::MMSrcModule::compile_local_table_to_c (src/compiling//compiling_global.nit:527,2--540:19)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-  val_t variable10;
-  val_t variable11;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ((compiling_base___CompilerVisitor___tc_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___tc))( variable0 /*v*/) /*CompilerVisitor::tc*/;
-  variable1 = ((compiling_base___ToolContext___global_t)CALL(variable1,COLOR_compiling_base___ToolContext___global))(variable1) /*ToolContext::global*/;
-  variable2 = variable1;
-  if (!UNTAG_Bool(variable2)) { /* or */
-    variable2 = ATTR_compiling_global___MMSrcModule____local_table( self) /*MMSrcModule::_local_table*/;
-    variable2 = ((array___AbstractArray___is_empty_t)CALL(variable2,COLOR_abstract_collection___Collection___is_empty))(variable2) /*Array::is_empty*/;
-  }
-  variable1 = variable2;
-  if (UNTAG_Bool(variable1)) { /*if*/
-    goto return_label50;
-  }
-  variable1 = NEW_string___String___init(); /*new String*/
-  variable2 = NEW_string___String___with_native(BOX_NativeString("const int SFT_"), TAG_Int(14)); /*new String*/
-  variable3 = variable2;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable3) /*String::append*/;
-  variable4 = ((abstractmetamodel___MMModule___name_t)CALL( self,COLOR_abstractmetamodel___MMModule___name))( self) /*MMSrcModule::name*/;
-  variable5 = variable4;
-  variable5 = ((string___String___to_s_t)CALL(variable5,COLOR_string___Object___to_s))(variable5) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable5) /*String::append*/;
-  variable6 = NEW_string___String___with_native(BOX_NativeString("["), TAG_Int(1)); /*new String*/
-  variable7 = variable6;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable7) /*String::append*/;
-  variable8 = ATTR_compiling_global___MMSrcModule____local_table( self) /*MMSrcModule::_local_table*/;
-  variable8 = ((array___AbstractArray___length_t)CALL(variable8,COLOR_abstract_collection___Collection___length))(variable8) /*Array::length*/;
-  variable9 = variable8;
-  variable9 = ((string___String___to_s_t)CALL(variable9,COLOR_string___Object___to_s))(variable9) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable9) /*String::append*/;
-  variable10 = NEW_string___String___with_native(BOX_NativeString("] = {"), TAG_Int(5)); /*new String*/
-  variable11 = variable10;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable11) /*String::append*/;
-  ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable1) /*CompilerVisitor::add_instr*/;
-  ((compiling_base___CompilerVisitor___indent_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___indent))( variable0 /*v*/) /*CompilerVisitor::indent*/;
-  variable1 = ATTR_compiling_global___MMSrcModule____local_table( self) /*MMSrcModule::_local_table*/;
-  variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Array::iterator*/;
+  struct trace_t trace = {NULL, NULL, 509, LOCATE_compiling_global___MMSrcModule___compile_local_table_to_c};
+  static val_t once_value_87 = NIT_NULL; /* Once value for string variable[4]*/
+  static val_t once_value_88 = NIT_NULL; /* Once value for string variable[4]*/
+  static val_t once_value_89 = NIT_NULL; /* Once value for string variable[4]*/
+  static val_t once_value_90 = NIT_NULL; /* Once value for string variable[4]*/
+  static val_t once_value_91 = NIT_NULL; /* Once value for string variable[4]*/
+  static val_t once_value_92 = NIT_NULL; /* Once value for string variable[4]*/
+    static val_t once_value_94 = NIT_NULL; /* Once value for string variable[7]*/
+  static val_t once_value_95 = NIT_NULL; /* Once value for string variable[3]*/
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_87 != NIT_NULL) variable[4] = once_value_87;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString("const char *LOCATE_"), TAG_Int(19)) /*new String*/;
+    once_value_87 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstractmetamodel___MMModule___name(variable[0])(variable[0]) /*MMModule::name*/;
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_88 != NIT_NULL) variable[4] = once_value_88;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString(" = \""), TAG_Int(4)) /*new String*/;
+    once_value_88 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstractmetamodel___MMModule___filename(variable[0])(variable[0]) /*MMModule::filename*/;
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_89 != NIT_NULL) variable[4] = once_value_89;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString("\";"), TAG_Int(2)) /*new String*/;
+    once_value_89 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
+  CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*CompilerVisitor::add_instr*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_compiling_base___CompilerVisitor___tc( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::tc*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_compiling_base___ToolContext___global(variable[3])(variable[3]) /*ToolContext::global*/;
+  /* Ensure var variable[3]: Left 'or' operand*/
+  if (!UNTAG_Bool(variable[3])) { /* or */
+    /* Register variable[3]: Result */
+    variable[3] = ATTR_compiling_global___MMSrcModule____local_table(variable[0]) /*MMSrcModule::_local_table*/;
+    /* Register variable[3]: Result */
+    variable[3] = CALL_abstract_collection___Collection___is_empty(variable[3])(variable[3]) /*AbstractArrayRead::is_empty*/;
+  }
+  /* Register variable[3]: Result */
+  if (UNTAG_Bool(variable[3])) { /*if*/
+    goto return_label86;
+  }
+  variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_90 != NIT_NULL) variable[4] = once_value_90;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString("const int SFT_"), TAG_Int(14)) /*new String*/;
+    once_value_90 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstractmetamodel___MMModule___name(variable[0])(variable[0]) /*MMModule::name*/;
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_91 != NIT_NULL) variable[4] = once_value_91;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString("["), TAG_Int(1)) /*new String*/;
+    once_value_91 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_compiling_global___MMSrcModule____local_table(variable[0]) /*MMSrcModule::_local_table*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___length(variable[4])(variable[4]) /*AbstractArrayRead::length*/;
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_92 != NIT_NULL) variable[4] = once_value_92;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString("] = {"), TAG_Int(5)) /*new String*/;
+    once_value_92 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
+  CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*CompilerVisitor::add_instr*/;
+  CALL_compiling_base___CompilerVisitor___indent( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::indent*/;
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_compiling_global___MMSrcModule____local_table(variable[0]) /*MMSrcModule::_local_table*/;
+  /* Register variable[3]: For iterator */
+  variable[3] = CALL_abstract_collection___Collection___iterator(variable[3])(variable[3]) /*AbstractArrayRead::iterator*/;
   while (true) { /*for*/
-    variable2 = ((array___ArrayIterator___is_ok_t)CALL(variable1,COLOR_abstract_collection___Iterator___is_ok))(variable1) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable2)) break; /*for*/
-    variable2 = ((array___ArrayIterator___item_t)CALL(variable1,COLOR_abstract_collection___Iterator___item))(variable1) /*ArrayIterator::item*/;
-    variable3 = ((compiling_global___CompilerVisitor___global_analysis_t)CALL( variable0 /*v*/,COLOR_compiling_global___CompilerVisitor___global_analysis))( variable0 /*v*/) /*CompilerVisitor::global_analysis*/;
-    variable3 = ((compiling_global___LocalTableElt___value_t)CALL( variable2 /*e*/,COLOR_compiling_global___LocalTableElt___value))( variable2 /*e*/, variable3) /*LocalTableElt::value*/;
-    variable4 = NEW_string___String___with_native(BOX_NativeString(","), TAG_Int(1)); /*new String*/
-    variable3 = ((string___String_____plus_t)CALL(variable3,COLOR_string___String_____plus))(variable3, variable4) /*String::+*/;
-    ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable3) /*CompilerVisitor::add_instr*/;
-    continue_51: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable1,COLOR_abstract_collection___Iterator___next))(variable1) /*ArrayIterator::next*/;
-  }
-  break_51: while(0);
-  ((compiling_base___CompilerVisitor___unindent_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___unindent))( variable0 /*v*/) /*CompilerVisitor::unindent*/;
-  variable1 = NEW_string___String___with_native(BOX_NativeString("};"), TAG_Int(2)); /*new String*/
-  ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable1) /*CompilerVisitor::add_instr*/;
-  return_label50: while(false);
+    /* Register variable[4]: For 'is_ok' result */
+    variable[4] = CALL_abstract_collection___Iterator___is_ok(variable[3])(variable[3]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[4])) break; /*for*/
+    variable[4] = CALL_abstract_collection___Iterator___item(variable[3])(variable[3]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[5]: Local variable */
+    variable[5] = variable[4];
+    /* Register variable[6]: Result */
+    variable[6] = CALL_compiling_global___GlobalCompilerVisitor___global_analysis( variable[1] /*v*/)( variable[1] /*v*/) /*GlobalCompilerVisitor::global_analysis*/;
+    /* Register variable[6]: Result */
+    variable[6] = CALL_compiling_global___ModuleTableElt___value( variable[5] /*e*/)( variable[5] /*e*/, variable[6]) /*ModuleTableElt::value*/;
+    /* Register variable[7]: Once String constant */
+    if (once_value_94 != NIT_NULL) variable[7] = once_value_94;
+    else {
+      variable[7] = NEW_String_string___String___with_native(BOX_NativeString(","), TAG_Int(1)) /*new String*/;
+      once_value_94 = variable[7];
+    }
+    /* Register variable[7]: Result */
+    /* Register variable[6]: Result */
+    variable[6] = CALL_string___String_____plus(variable[6])(variable[6], variable[7]) /*String::+*/;
+    CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[6]) /*CompilerVisitor::add_instr*/;
+    continue_93: while(0);
+    CALL_abstract_collection___Iterator___next(variable[3])(variable[3]) /*ArrayIterator::next*/;
+  }
+  break_93: while(0);
+  CALL_compiling_base___CompilerVisitor___unindent( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::unindent*/;
+  /* Register variable[3]: Once String constant */
+  if (once_value_95 != NIT_NULL) variable[3] = once_value_95;
+  else {
+    variable[3] = NEW_String_string___String___with_native(BOX_NativeString("};"), TAG_Int(2)) /*new String*/;
+    once_value_95 = variable[3];
+  }
+  /* Register variable[3]: Result */
+  CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*CompilerVisitor::add_instr*/;
+  return_label86: while(false);
+  tracehead = trace.prev;
+  return;
+}
+void compiling_global___AbsTableElt___compile_macros(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 532, LOCATE_compiling_global___AbsTableElt___compile_macros};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_compiling_global, 532);
+  nit_exit(1);
+  tracehead = trace.prev;
+  return;
+}
+void compiling_global___AbsTableElt___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 0, LOCATE_compiling_global___AbsTableElt___init};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
   tracehead = trace.prev;
   return;
 }
 val_t compiling_global___TableElt___is_related_to(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::TableElt::is_related_to (src/compiling//compiling_global.nit:545,2--42)"};
+  struct trace_t trace = {NULL, NULL, 540, LOCATE_compiling_global___TableElt___is_related_to};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method is_related_to called (src/compiling//compiling_global.nit:545,2)\n");
+  trace.file = LOCATE_compiling_global;
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_compiling_global, 540);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 val_t compiling_global___TableElt___length(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::TableElt::length (src/compiling//compiling_global.nit:546,2--29)"};
-  val_t variable0;
+  struct trace_t trace = {NULL, NULL, 543, LOCATE_compiling_global___TableElt___length};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  TAG_Int(1);
-  goto return_label52;
-  return_label52: while(false);
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Method return value and escape marker */
+  variable[1] =  TAG_Int(1);
+  goto return_label96;
+  return_label96: while(false);
   tracehead = trace.prev;
-  return variable0;
+  return variable[1];
 }
 val_t compiling_global___TableElt___item(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::TableElt::item (src/compiling//compiling_global.nit:547,2--43)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 546, LOCATE_compiling_global___TableElt___item};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  self;
-  goto return_label53;
-  return_label53: while(false);
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  variable[2] = variable[0];
+  goto return_label97;
+  return_label97: while(false);
   tracehead = trace.prev;
-  return variable1;
+  return variable[2];
 }
 val_t compiling_global___TableElt___compile_to_c(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "compiling_global::TableElt::compile_to_c (src/compiling//compiling_global.nit:548,2--63)"};
+  struct trace_t trace = {NULL, NULL, 549, LOCATE_compiling_global___TableElt___compile_to_c};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method compile_to_c called (src/compiling//compiling_global.nit:548,2)\n");
+  trace.file = LOCATE_compiling_global;
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_compiling_global, 549);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
-val_t compiling_global___LocalTableElt___symbol(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::LocalTableElt::symbol (src/compiling//compiling_global.nit:553,2--20)"};
+val_t compiling_global___ModuleTableElt___value(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 557, LOCATE_compiling_global___ModuleTableElt___value};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method symbol called (src/compiling//compiling_global.nit:553,2)\n");
+  trace.file = LOCATE_compiling_global;
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_compiling_global, 557);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
-val_t compiling_global___LocalTableElt___value(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::LocalTableElt::value (src/compiling//compiling_global.nit:554,2--39)"};
+void compiling_global___ModuleTableEltGroup___compile_macros(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 567, LOCATE_compiling_global___ModuleTableEltGroup___compile_macros};
+    static val_t once_value_100 = NIT_NULL; /* Once value for string variable[9]*/
+    static val_t once_value_101 = NIT_NULL; /* Once value for string variable[9]*/
+    static val_t once_value_102 = NIT_NULL; /* Once value for string variable[9]*/
+  val_t variable[10];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method value called (src/compiling//compiling_global.nit:554,2)\n");
-  nit_exit(1);
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Local variable */
+  variable[4] =  TAG_Int(0);
+  /* Register variable[5]: Result */
+  variable[5] = ATTR_compiling_global___ModuleTableEltGroup____elements(variable[0]) /*ModuleTableEltGroup::_elements*/;
+  /* Register variable[5]: For iterator */
+  variable[5] = CALL_abstract_collection___Collection___iterator(variable[5])(variable[5]) /*AbstractArrayRead::iterator*/;
+  while (true) { /*for*/
+    /* Register variable[6]: For 'is_ok' result */
+    variable[6] = CALL_abstract_collection___Iterator___is_ok(variable[5])(variable[5]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[6])) break; /*for*/
+    variable[6] = CALL_abstract_collection___Iterator___item(variable[5])(variable[5]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[7]: Local variable */
+    variable[7] = variable[6];
+    variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+    /* Register variable[9]: Once String constant */
+    if (once_value_100 != NIT_NULL) variable[9] = once_value_100;
+    else {
+      variable[9] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+      once_value_100 = variable[9];
+    }
+    /* Register variable[9]: Result */
+    /* Ensure var variable[9]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
+    variable[9] =  variable[2] /*value*/ /* Ensure var: super-string element*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
+    /* Register variable[9]: Once String constant */
+    if (once_value_101 != NIT_NULL) variable[9] = once_value_101;
+    else {
+      variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" + "), TAG_Int(3)) /*new String*/;
+      once_value_101 = variable[9];
+    }
+    /* Register variable[9]: Result */
+    /* Ensure var variable[9]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
+    variable[9] =  variable[4] /*i*/ /* Ensure var: super-string element*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
+    /* Register variable[9]: Once String constant */
+    if (once_value_102 != NIT_NULL) variable[9] = once_value_102;
+    else {
+      variable[9] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+      once_value_102 = variable[9];
+    }
+    /* Register variable[9]: Result */
+    /* Ensure var variable[9]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
+    /* Register variable[8]: Result */
+    variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
+    CALL_compiling_global___AbsTableElt___compile_macros( variable[7] /*e*/)( variable[7] /*e*/,  variable[1] /*v*/, variable[8]) /*AbsTableElt::compile_macros*/;
+    variable[4] = TAG_Int(UNTAG_Int(variable[4])+UNTAG_Int( TAG_Int(1))) /*i*/;
+    continue_99: while(0);
+    CALL_abstract_collection___Iterator___next(variable[5])(variable[5]) /*ArrayIterator::next*/;
+  }
+  break_99: while(0);
+  return_label98: while(false);
   tracehead = trace.prev;
-  return NIT_NULL;
+  return;
+}
+val_t compiling_global___ModuleTableEltGroup___value(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 566, LOCATE_compiling_global___ModuleTableEltGroup___value};
+  static val_t once_value_104 = NIT_NULL; /* Once value for string variable[4]*/
+  static val_t once_value_105 = NIT_NULL; /* Once value for string variable[4]*/
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_104 != NIT_NULL) variable[4] = once_value_104;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+    once_value_104 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_compiling_global___ModuleTableEltGroup____elements(variable[0]) /*ModuleTableEltGroup::_elements*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___Collection___first(variable[4])(variable[4]) /*IndexedCollectionRead::first*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_compiling_global___ColorContext___color( variable[1] /*ga*/)( variable[1] /*ga*/, variable[4]) /*ColorContext::color*/;
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_105 != NIT_NULL) variable[4] = once_value_105;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString(" /* Group of ? */"), TAG_Int(17)) /*new String*/;
+    once_value_105 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
+  variable[2] = variable[3];
+  goto return_label103;
+  return_label103: while(false);
+  tracehead = trace.prev;
+  return variable[2];
+}
+val_t compiling_global___ModuleTableEltGroup___elements(val_t  self) {
+  struct trace_t trace = {NULL, NULL, 564, LOCATE_compiling_global___ModuleTableEltGroup___elements};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  tracehead = trace.prev;
+  return ATTR_compiling_global___ModuleTableEltGroup____elements( self) /*ModuleTableEltGroup::_elements*/;
+}
+void compiling_global___TableEltProp___init(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 582, LOCATE_compiling_global___TableEltProp___init};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_TableEltProp].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_compiling_global___TableEltProp____property(variable[0]) /*TableEltProp::_property*/ =  variable[1] /*p*/;
+  return_label106: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_TableEltProp].i] = 1;
+  tracehead = trace.prev;
+  return;
 }
-val_t compiling_global___TableEltPropPos___symbol(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltPropPos::symbol (src/compiling//compiling_global.nit:560,2--54)"};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 = ATTR_compiling_global___TableEltPropPos____property( self) /*TableEltPropPos::_property*/;
-  variable0 = ((abstractmetamodel___MMLocalProperty___global_t)CALL(variable0,COLOR_abstractmetamodel___MMLocalProperty___global))(variable0) /*MMSrcLocalProperty::global*/;
-  variable0 = ((compiling_base___MMGlobalProperty___color_id_t)CALL(variable0,COLOR_compiling_base___MMGlobalProperty___color_id))(variable0) /*MMGlobalProperty::color_id*/;
-  goto return_label54;
-  return_label54: while(false);
-  tracehead = trace.prev;
-  return variable0;
-}
-val_t compiling_global___TableEltPropPos___value(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltPropPos::value (src/compiling//compiling_global.nit:561,2--77)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-  val_t variable10;
-  val_t variable11;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = NEW_string___String___init(); /*new String*/
-  variable2 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-  variable3 = variable2;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable3) /*String::append*/;
-  variable4 = ((compiling_global___ColorContext___color_t)CALL( variable0 /*ga*/,COLOR_compiling_global___ColorContext___color))( variable0 /*ga*/,  self) /*GlobalAnalysis::color*/;
-  variable5 = variable4;
-  variable5 = ((string___String___to_s_t)CALL(variable5,COLOR_string___Object___to_s))(variable5) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable5) /*String::append*/;
-  variable6 = NEW_string___String___with_native(BOX_NativeString(" /* Property "), TAG_Int(13)); /*new String*/
-  variable7 = variable6;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable7) /*String::append*/;
-  variable8 = ATTR_compiling_global___TableEltPropPos____property( self) /*TableEltPropPos::_property*/;
-  variable9 = variable8;
-  variable9 = ((string___String___to_s_t)CALL(variable9,COLOR_string___Object___to_s))(variable9) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable9) /*String::append*/;
-  variable10 = NEW_string___String___with_native(BOX_NativeString(" */"), TAG_Int(3)); /*new String*/
-  variable11 = variable10;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable11) /*String::append*/;
-  goto return_label55;
-  return_label55: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-void compiling_global___TableEltPropPos___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltPropPos::init (src/compiling//compiling_global.nit:563,2--565:15)"};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltPropPos].i]) return;
-  ATTR_compiling_global___TableEltPropPos____property( self) /*TableEltPropPos::_property*/ =  variable0 /*p*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltPropPos].i] = 1;
+void compiling_global___TableEltMeth___compile_macros(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 591, LOCATE_compiling_global___TableEltMeth___compile_macros};
+  static val_t once_value_108 = NIT_NULL; /* Once value for string variable[6]*/
+  static val_t once_value_109 = NIT_NULL; /* Once value for string variable[6]*/
+  static val_t once_value_110 = NIT_NULL; /* Once value for string variable[6]*/
+  static val_t once_value_111 = NIT_NULL; /* Once value for string variable[6]*/
+  val_t variable[7];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Local variable */
+  /* Register variable[5]: Result */
+  variable[5] = ATTR_compiling_global___TableEltProp____property(variable[0]) /*TableEltProp::_property*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_abstractmetamodel___MMLocalProperty___global(variable[5])(variable[5]) /*MMLocalProperty::global*/;
+  variable[4] = variable[5];
+  variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_108 != NIT_NULL) variable[6] = once_value_108;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString("#define "), TAG_Int(8)) /*new String*/;
+    once_value_108 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_compiling_base___MMGlobalProperty___meth_call( variable[4] /*pg*/)( variable[4] /*pg*/) /*MMGlobalProperty::meth_call*/;
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_109 != NIT_NULL) variable[6] = once_value_109;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString("(recv) (("), TAG_Int(9)) /*new String*/;
+    once_value_109 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_abstractmetamodel___MMGlobalProperty___intro( variable[4] /*pg*/)( variable[4] /*pg*/) /*MMGlobalProperty::intro*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_compiling_base___MMLocalProperty___cname(variable[6])(variable[6]) /*MMLocalProperty::cname*/;
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_110 != NIT_NULL) variable[6] = once_value_110;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString("_t)CALL((recv), ("), TAG_Int(17)) /*new String*/;
+    once_value_110 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  variable[6] =  variable[2] /*value*/ /* Ensure var: super-string element*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_111 != NIT_NULL) variable[6] = once_value_111;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString(")))"), TAG_Int(3)) /*new String*/;
+    once_value_111 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
+  CALL_compiling_base___CompilerVisitor___add_decl( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*CompilerVisitor::add_decl*/;
+  return_label107: while(false);
   tracehead = trace.prev;
   return;
 }
-val_t compiling_global___TableEltMethPos___compile_to_c(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltMethPos::compile_to_c (src/compiling//compiling_global.nit:571,2--574:16)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable3 = ATTR_compiling_global___TableEltPropPos____property( self) /*TableEltMethPos::_property*/;
-  variable3 = ((abstractmetamodel___MMLocalProperty___global_t)CALL(variable3,COLOR_abstractmetamodel___MMLocalProperty___global))(variable3) /*MMSrcLocalProperty::global*/;
-  variable3 = ((inheritance___MMLocalClass_____bra_t)CALL( variable1 /*c*/,COLOR_abstractmetamodel___MMLocalClass_____bra))( variable1 /*c*/, variable3) /*MMLocalClass::[]*/;
-  variable2 = variable3;
-  variable3 = ((compiling_base___MMLocalProperty___cname_t)CALL( variable2 /*p*/,COLOR_compiling_base___MMLocalProperty___cname))( variable2 /*p*/) /*MMLocalProperty::cname*/;
-  variable2 = variable3;
-  goto return_label57;
-  return_label57: while(false);
-  tracehead = trace.prev;
-  return variable2;
-}
-void compiling_global___TableEltMethPos___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltMethPos::init (src/compiling//compiling_global.nit:576,2--17)"};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltMethPos].i]) return;
-  ((compiling_global___TableEltPropPos___init_t)CALL( self,COLOR_compiling_global___TableEltPropPos___init))( self,  param0, init_table /*YYY*/) /*TableEltPropPos::init*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltMethPos].i] = 1;
+val_t compiling_global___TableEltMeth___compile_to_c(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 597, LOCATE_compiling_global___TableEltMeth___compile_to_c};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Local variable */
+  /* Register variable[5]: Result */
+  variable[5] = ATTR_compiling_global___TableEltProp____property(variable[0]) /*TableEltProp::_property*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_abstractmetamodel___MMLocalProperty___global(variable[5])(variable[5]) /*MMLocalProperty::global*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_abstractmetamodel___MMLocalClass_____bra( variable[2] /*c*/)( variable[2] /*c*/, variable[5]) /*MMLocalClass::[]*/;
+  variable[4] = variable[5];
+  /* Register variable[5]: Result */
+  variable[5] = CALL_compiling_base___MMLocalProperty___cname( variable[4] /*p*/)( variable[4] /*p*/) /*MMLocalProperty::cname*/;
+  variable[3] = variable[5];
+  goto return_label112;
+  return_label112: while(false);
+  tracehead = trace.prev;
+  return variable[3];
+}
+void compiling_global___TableEltSuper___compile_macros(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 607, LOCATE_compiling_global___TableEltSuper___compile_macros};
+  static val_t once_value_114 = NIT_NULL; /* Once value for string variable[6]*/
+  static val_t once_value_115 = NIT_NULL; /* Once value for string variable[6]*/
+  static val_t once_value_116 = NIT_NULL; /* Once value for string variable[6]*/
+  static val_t once_value_117 = NIT_NULL; /* Once value for string variable[6]*/
+  val_t variable[7];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Local variable */
+  /* Register variable[5]: Result */
+  variable[5] = ATTR_compiling_global___TableEltProp____property(variable[0]) /*TableEltProp::_property*/;
+  variable[4] = variable[5];
+  variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_114 != NIT_NULL) variable[6] = once_value_114;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString("#define "), TAG_Int(8)) /*new String*/;
+    once_value_114 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_compiling_base___MMLocalProperty___super_meth_call( variable[4] /*p*/)( variable[4] /*p*/) /*MMLocalProperty::super_meth_call*/;
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_115 != NIT_NULL) variable[6] = once_value_115;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString("(recv) (("), TAG_Int(9)) /*new String*/;
+    once_value_115 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_compiling_base___MMLocalProperty___cname( variable[4] /*p*/)( variable[4] /*p*/) /*MMLocalProperty::cname*/;
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_116 != NIT_NULL) variable[6] = once_value_116;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString("_t)CALL((recv), ("), TAG_Int(17)) /*new String*/;
+    once_value_116 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  variable[6] =  variable[2] /*value*/ /* Ensure var: super-string element*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_117 != NIT_NULL) variable[6] = once_value_117;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString(")))"), TAG_Int(3)) /*new String*/;
+    once_value_117 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
+  CALL_compiling_base___CompilerVisitor___add_decl( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*CompilerVisitor::add_decl*/;
+  return_label113: while(false);
   tracehead = trace.prev;
   return;
 }
-val_t compiling_global___TableEltSuperPos___symbol(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltSuperPos::symbol (src/compiling//compiling_global.nit:581,2--57)"};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 = ATTR_compiling_global___TableEltPropPos____property( self) /*TableEltSuperPos::_property*/;
-  variable0 = ((compiling_base___MMLocalProperty___color_id_for_super_t)CALL(variable0,COLOR_compiling_base___MMLocalProperty___color_id_for_super))(variable0) /*MMSrcLocalProperty::color_id_for_super*/;
-  goto return_label59;
-  return_label59: while(false);
-  tracehead = trace.prev;
-  return variable0;
-}
-val_t compiling_global___TableEltSuperPos___compile_to_c(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltSuperPos::compile_to_c (src/compiling//compiling_global.nit:582,2--601:13)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-    val_t variable7;
-    val_t variable8;
-        val_t variable9;
-        val_t variable10;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable3 = ATTR_compiling_global___TableEltPropPos____property( self) /*TableEltSuperPos::_property*/;
-  variable3 = ((abstractmetamodel___MMLocalProperty___local_class_t)CALL(variable3,COLOR_abstractmetamodel___MMLocalProperty___local_class))(variable3) /*MMSrcLocalProperty::local_class*/;
-  variable2 = variable3;
-  variable4 = ATTR_compiling_global___TableEltPropPos____property( self) /*TableEltSuperPos::_property*/;
-  variable4 = ((abstractmetamodel___MMLocalProperty___global_t)CALL(variable4,COLOR_abstractmetamodel___MMLocalProperty___global))(variable4) /*MMSrcLocalProperty::global*/;
-  variable3 = variable4;
-  variable5 = ((abstractmetamodel___MMLocalClass___che_t)CALL( variable1 /*c*/,COLOR_abstractmetamodel___MMLocalClass___che))( variable1 /*c*/) /*MMLocalClass::che*/;
-  variable5 = ((partial_order___PartialOrderElement___linear_extension_t)CALL(variable5,COLOR_partial_order___PartialOrderElement___linear_extension))(variable5) /*PartialOrderElement::linear_extension*/;
-  variable4 = variable5;
-  variable5 =  TAG_Bool(false);
-  variable6 = ((array___AbstractArray___iterator_t)CALL( variable4 /*lin*/,COLOR_abstract_collection___Collection___iterator))( variable4 /*lin*/) /*Array::iterator*/;
+val_t compiling_global___TableEltSuper___compile_to_c(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 613, LOCATE_compiling_global___TableEltSuper___compile_to_c};
+  val_t variable[12];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Local variable */
+  /* Register variable[5]: Result */
+  variable[5] = ATTR_compiling_global___TableEltProp____property(variable[0]) /*TableEltProp::_property*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_abstractmetamodel___MMLocalProperty___local_class(variable[5])(variable[5]) /*MMLocalProperty::local_class*/;
+  variable[4] = variable[5];
+  /* Register variable[5]: Local variable */
+  /* Register variable[6]: Result */
+  variable[6] = ATTR_compiling_global___TableEltProp____property(variable[0]) /*TableEltProp::_property*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_abstractmetamodel___MMLocalProperty___global(variable[6])(variable[6]) /*MMLocalProperty::global*/;
+  variable[5] = variable[6];
+  /* Register variable[6]: Local variable */
+  /* Register variable[7]: Result */
+  variable[7] = CALL_abstractmetamodel___MMLocalClass___che( variable[2] /*c*/)( variable[2] /*c*/) /*MMLocalClass::che*/;
+  /* Register variable[7]: Result */
+  variable[7] = CALL_partial_order___PartialOrderElement___linear_extension(variable[7])(variable[7]) /*PartialOrderElement::linear_extension*/;
+  variable[6] = variable[7];
+  /* Register variable[7]: Local variable */
+  variable[7] =  TAG_Bool(false);
+  /* Register variable[8]: For iterator */
+  variable[8] = CALL_abstract_collection___Collection___iterator( variable[6] /*lin*/)( variable[6] /*lin*/) /*AbstractArrayRead::iterator*/;
   while (true) { /*for*/
-    variable7 = ((array___ArrayIterator___is_ok_t)CALL(variable6,COLOR_abstract_collection___Iterator___is_ok))(variable6) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable7)) break; /*for*/
-    variable7 = ((array___ArrayIterator___item_t)CALL(variable6,COLOR_abstract_collection___Iterator___item))(variable6) /*ArrayIterator::item*/;
-    variable8 = TAG_Bool(( variable7 /*s*/ ==  variable2 /*pc*/) || (( variable7 /*s*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*s*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*s*/, variable2 /*pc*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*s*/,COLOR_kernel___Object_____eqeq))( variable7 /*s*/,  variable2 /*pc*/) /*MMLocalClass::==*/)))));
-    if (UNTAG_Bool(variable8)) { /*if*/
-      variable5 =  TAG_Bool(true) /*found=*/;
+    /* Register variable[9]: For 'is_ok' result */
+    variable[9] = CALL_abstract_collection___Iterator___is_ok(variable[8])(variable[8]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[9])) break; /*for*/
+    variable[9] = CALL_abstract_collection___Iterator___item(variable[8])(variable[8]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[10]: Local variable */
+    variable[10] = variable[9];
+    /* Register variable[11]: Result */
+    variable[11] = TAG_Bool(( variable[10] /*s*/ ==  variable[4] /*pc*/) || (( variable[10] /*s*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[10] /*s*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[10] /*s*/, variable[4] /*pc*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[10] /*s*/)( variable[10] /*s*/,  variable[4] /*pc*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[11])) { /*if*/
+      variable[7] =  TAG_Bool(true) /*found=*/;
     } else { /*if*/
-      variable8 =  variable5 /*found*/;
-      if (UNTAG_Bool(variable8)) { /* and */
-        variable8 = ((abstractmetamodel___MMLocalClass___che_t)CALL( variable1 /*c*/,COLOR_abstractmetamodel___MMLocalClass___che))( variable1 /*c*/) /*MMLocalClass::che*/;
-        variable8 = ((partial_order___PartialOrderElement_____l_t)CALL(variable8,COLOR_partial_order___PartialOrderElement_____l))(variable8,  variable7 /*s*/) /*PartialOrderElement::<*/;
-      }
-      if (UNTAG_Bool(variable8)) { /*if*/
-        variable9 = ((inheritance___MMLocalClass_____bra_t)CALL( variable7 /*s*/,COLOR_abstractmetamodel___MMLocalClass_____bra))( variable7 /*s*/,  variable3 /*g*/) /*MMLocalClass::[]*/;
-        variable8 = variable9;
-        variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*p*/ ==  NIT_NULL /*null*/) || (( variable8 /*p*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*p*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*p*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*p*/,COLOR_kernel___Object_____eqeq))( variable8 /*p*/,  NIT_NULL /*null*/) /*MMLocalProperty::==*/)))))));
-        variable10 = variable9;
-        if (UNTAG_Bool(variable10)) { /* and */
-          variable10 = TAG_Bool(( variable8 /*p*/==NIT_NULL) || VAL_ISA( variable8 /*p*/, COLOR_MMConcreteProperty, ID_MMConcreteProperty)) /*cast MMConcreteProperty*/;
-        }
-        variable9 = variable10;
-        if (UNTAG_Bool(variable9)) { /*if*/
-          variable9 = ((compiling_base___MMLocalProperty___cname_t)CALL( variable8 /*p*/,COLOR_compiling_base___MMLocalProperty___cname))( variable8 /*p*/) /*MMConcreteProperty::cname*/;
-          variable2 = variable9;
-          goto return_label60;
+      variable[11] =  variable[7] /*found*/ /* Ensure var: Left 'and' operand*/;
+      if (UNTAG_Bool(variable[11])) { /* and */
+        /* Register variable[11]: Result */
+        variable[11] = CALL_abstractmetamodel___MMLocalClass___che( variable[2] /*c*/)( variable[2] /*c*/) /*MMLocalClass::che*/;
+        /* Register variable[11]: Result */
+        variable[11] = CALL_partial_order___PartialOrderElement_____l(variable[11])(variable[11],  variable[10] /*s*/) /*PartialOrderElement::<*/;
+      }
+      /* Register variable[11]: Result */
+      if (UNTAG_Bool(variable[11])) { /*if*/
+        /* Register variable[11]: Result */
+        variable[11] = CALL_abstractmetamodel___MMLocalClass___has_global_property( variable[10] /*s*/)( variable[10] /*s*/,  variable[5] /*g*/) /*MMLocalClass::has_global_property*/;
+        if (UNTAG_Bool(variable[11])) { /*if*/
+          /* Register variable[11]: Result */
+          variable[11] = CALL_abstractmetamodel___MMLocalClass_____bra( variable[10] /*s*/)( variable[10] /*s*/,  variable[5] /*g*/) /*MMLocalClass::[]*/;
+          /* Register variable[11]: Result */
+          variable[11] = CALL_compiling_base___MMLocalProperty___cname(variable[11])(variable[11]) /*MMLocalProperty::cname*/;
+          variable[3] = variable[11];
+          goto return_label118;
         }
       }
     }
-    continue_61: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable6,COLOR_abstract_collection___Iterator___next))(variable6) /*ArrayIterator::next*/;
+    continue_119: while(0);
+    CALL_abstract_collection___Iterator___next(variable[8])(variable[8]) /*ArrayIterator::next*/;
   }
-  break_61: while(0);
-  if (!UNTAG_Bool( TAG_Bool(false))) { fprintf(stderr, "Assert failed: src/compiling//compiling_global.nit:600,3--14\n"); nit_exit(1);}
-  variable2 =  NIT_NULL /*null*/;
-  goto return_label60;
-  return_label60: while(false);
+  break_119: while(0);
+  if (!UNTAG_Bool( TAG_Bool(false))) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_compiling_global___TableEltSuper___compile_to_c, LOCATE_compiling_global, 630); nit_exit(1);}
+  variable[3] =  NIT_NULL /*null*/;
+  goto return_label118;
+  return_label118: while(false);
   tracehead = trace.prev;
-  return variable2;
+  return variable[3];
 }
-void compiling_global___TableEltSuperPos___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltSuperPos::init (src/compiling//compiling_global.nit:604,2--17)"};
-  val_t variable0;
+void compiling_global___TableEltAttr___compile_macros(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 638, LOCATE_compiling_global___TableEltAttr___compile_macros};
+  static val_t once_value_121 = NIT_NULL; /* Once value for string variable[6]*/
+  static val_t once_value_122 = NIT_NULL; /* Once value for string variable[6]*/
+  static val_t once_value_123 = NIT_NULL; /* Once value for string variable[6]*/
+  val_t variable[7];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltSuperPos].i]) return;
-  ((compiling_global___TableEltPropPos___init_t)CALL( self,COLOR_compiling_global___TableEltPropPos___init))( self,  param0, init_table /*YYY*/) /*TableEltPropPos::init*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltSuperPos].i] = 1;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Local variable */
+  /* Register variable[5]: Result */
+  variable[5] = ATTR_compiling_global___TableEltProp____property(variable[0]) /*TableEltProp::_property*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_abstractmetamodel___MMLocalProperty___global(variable[5])(variable[5]) /*MMLocalProperty::global*/;
+  variable[4] = variable[5];
+  variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_121 != NIT_NULL) variable[6] = once_value_121;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString("#define "), TAG_Int(8)) /*new String*/;
+    once_value_121 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_compiling_base___MMGlobalProperty___attr_access( variable[4] /*pg*/)( variable[4] /*pg*/) /*MMGlobalProperty::attr_access*/;
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_122 != NIT_NULL) variable[6] = once_value_122;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString("(recv) ATTR(recv, ("), TAG_Int(19)) /*new String*/;
+    once_value_122 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  variable[6] =  variable[2] /*value*/ /* Ensure var: super-string element*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_123 != NIT_NULL) variable[6] = once_value_123;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString("))"), TAG_Int(2)) /*new String*/;
+    once_value_123 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
+  CALL_compiling_base___CompilerVisitor___add_decl( variable[1] /*v*/)( variable[1] /*v*/, variable[5]) /*CompilerVisitor::add_decl*/;
+  return_label120: while(false);
   tracehead = trace.prev;
   return;
 }
-val_t compiling_global___TableEltAttrPos___compile_to_c(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltAttrPos::compile_to_c (src/compiling//compiling_global.nit:609,2--613:53)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-  val_t variable10;
-  val_t variable11;
-  val_t variable12;
-  val_t variable13;
-  val_t variable14;
-  val_t variable15;
-  val_t variable16;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable3 = ((compiling_global___CompilerVisitor___global_analysis_t)CALL( variable0 /*v*/,COLOR_compiling_global___CompilerVisitor___global_analysis))( variable0 /*v*/) /*CompilerVisitor::global_analysis*/;
-  variable2 = variable3;
-  variable4 = ATTR_compiling_global___TableEltPropPos____property( self) /*TableEltAttrPos::_property*/;
-  variable4 = ((abstractmetamodel___MMLocalProperty___global_t)CALL(variable4,COLOR_abstractmetamodel___MMLocalProperty___global))(variable4) /*MMSrcLocalProperty::global*/;
-  variable4 = ((inheritance___MMLocalClass_____bra_t)CALL( variable1 /*c*/,COLOR_abstractmetamodel___MMLocalClass_____bra))( variable1 /*c*/, variable4) /*MMLocalClass::[]*/;
-  variable3 = variable4;
-  variable4 = NEW_string___String___init(); /*new String*/
-  variable5 = NEW_string___String___with_native(BOX_NativeString("/* "), TAG_Int(3)); /*new String*/
-  variable6 = variable5;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable6) /*String::append*/;
-  variable7 = ((compiling_global___ColorContext___color_t)CALL( variable2 /*ga*/,COLOR_compiling_global___ColorContext___color))( variable2 /*ga*/,  self) /*GlobalAnalysis::color*/;
-  variable8 = variable7;
-  variable8 = ((string___String___to_s_t)CALL(variable8,COLOR_string___Object___to_s))(variable8) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable8) /*String::append*/;
-  variable9 = NEW_string___String___with_native(BOX_NativeString(": Attribute "), TAG_Int(12)); /*new String*/
-  variable10 = variable9;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable10) /*String::append*/;
-  variable11 =  variable1 /*c*/;
-  variable11 = ((string___String___to_s_t)CALL(variable11,COLOR_string___Object___to_s))(variable11) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable11) /*String::append*/;
-  variable12 = NEW_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
-  variable13 = variable12;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable13) /*String::append*/;
-  variable14 =  variable3 /*p*/;
-  variable14 = ((string___String___to_s_t)CALL(variable14,COLOR_string___Object___to_s))(variable14) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable14) /*String::append*/;
-  variable15 = NEW_string___String___with_native(BOX_NativeString(" */"), TAG_Int(3)); /*new String*/
-  variable16 = variable15;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable16) /*String::append*/;
-  variable2 = variable4;
-  goto return_label63;
-  return_label63: while(false);
-  tracehead = trace.prev;
-  return variable2;
-}
-void compiling_global___TableEltAttrPos___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltAttrPos::init (src/compiling//compiling_global.nit:616,2--17)"};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltAttrPos].i]) return;
-  ((compiling_global___TableEltPropPos___init_t)CALL( self,COLOR_compiling_global___TableEltPropPos___init))( self,  param0, init_table /*YYY*/) /*TableEltPropPos::init*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltAttrPos].i] = 1;
+val_t compiling_global___TableEltAttr___compile_to_c(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 644, LOCATE_compiling_global___TableEltAttr___compile_to_c};
+  static val_t once_value_125 = NIT_NULL; /* Once value for string variable[7]*/
+  static val_t once_value_126 = NIT_NULL; /* Once value for string variable[7]*/
+  static val_t once_value_127 = NIT_NULL; /* Once value for string variable[7]*/
+  static val_t once_value_128 = NIT_NULL; /* Once value for string variable[7]*/
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Local variable */
+  /* Register variable[5]: Result */
+  variable[5] = CALL_compiling_global___GlobalCompilerVisitor___global_analysis( variable[1] /*v*/)( variable[1] /*v*/) /*GlobalCompilerVisitor::global_analysis*/;
+  variable[4] = variable[5];
+  /* Register variable[5]: Local variable */
+  /* Register variable[6]: Result */
+  variable[6] = ATTR_compiling_global___TableEltProp____property(variable[0]) /*TableEltProp::_property*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_abstractmetamodel___MMLocalProperty___global(variable[6])(variable[6]) /*MMLocalProperty::global*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_abstractmetamodel___MMLocalClass_____bra( variable[2] /*c*/)( variable[2] /*c*/, variable[6]) /*MMLocalClass::[]*/;
+  variable[5] = variable[6];
+  variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[7]: Once String constant */
+  if (once_value_125 != NIT_NULL) variable[7] = once_value_125;
+  else {
+    variable[7] = NEW_String_string___String___with_native(BOX_NativeString("/* "), TAG_Int(3)) /*new String*/;
+    once_value_125 = variable[7];
+  }
+  /* Register variable[7]: Result */
+  /* Ensure var variable[7]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+  /* Register variable[7]: Result */
+  variable[7] = CALL_compiling_global___ColorContext___color( variable[4] /*ga*/)( variable[4] /*ga*/, variable[0]) /*ColorContext::color*/;
+  /* Ensure var variable[7]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[7]: Once String constant */
+  if (once_value_126 != NIT_NULL) variable[7] = once_value_126;
+  else {
+    variable[7] = NEW_String_string___String___with_native(BOX_NativeString(": Attribute "), TAG_Int(12)) /*new String*/;
+    once_value_126 = variable[7];
+  }
+  /* Register variable[7]: Result */
+  /* Ensure var variable[7]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+  variable[7] =  variable[2] /*c*/ /* Ensure var: super-string element*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[7]: Once String constant */
+  if (once_value_127 != NIT_NULL) variable[7] = once_value_127;
+  else {
+    variable[7] = NEW_String_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)) /*new String*/;
+    once_value_127 = variable[7];
+  }
+  /* Register variable[7]: Result */
+  /* Ensure var variable[7]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+  variable[7] =  variable[5] /*p*/ /* Ensure var: super-string element*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[7]: Once String constant */
+  if (once_value_128 != NIT_NULL) variable[7] = once_value_128;
+  else {
+    variable[7] = NEW_String_string___String___with_native(BOX_NativeString(" */"), TAG_Int(3)) /*new String*/;
+    once_value_128 = variable[7];
+  }
+  /* Register variable[7]: Result */
+  /* Ensure var variable[7]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/;
+  variable[3] = variable[6];
+  goto return_label124;
+  return_label124: while(false);
   tracehead = trace.prev;
-  return;
+  return variable[3];
 }
-val_t compiling_global___TableEltClassPos___is_related_to(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltClassPos::is_related_to (src/compiling//compiling_global.nit:622,2--625:21)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable2 = ((abstractmetamodel___MMLocalClass___module_t)CALL( variable0 /*c*/,COLOR_abstractmetamodel___MMLocalClass___module))( variable0 /*c*/) /*MMLocalClass::module*/;
-  variable3 = ATTR_compiling_global___TableEltClassPos____local_class( self) /*TableEltClassPos::_local_class*/;
-  variable3 = ((abstractmetamodel___MMLocalClass___global_t)CALL(variable3,COLOR_abstractmetamodel___MMLocalClass___global))(variable3) /*MMLocalClass::global*/;
-  variable2 = ((abstractmetamodel___MMModule_____bra_t)CALL(variable2,COLOR_abstractmetamodel___MMModule_____bra))(variable2, variable3) /*MMModule::[]*/;
-  variable1 = variable2;
-  variable2 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( variable0 /*c*/,COLOR_abstractmetamodel___MMLocalClass___cshe))( variable0 /*c*/) /*MMLocalClass::cshe*/;
-  variable2 = ((partial_order___PartialOrderElement_____leq_t)CALL(variable2,COLOR_partial_order___PartialOrderElement_____leq))(variable2,  variable1 /*bc*/) /*PartialOrderElement::<=*/;
-  variable1 = variable2;
-  goto return_label65;
-  return_label65: while(false);
+void compiling_global___AbsTableEltClass___compile_macros(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 666, LOCATE_compiling_global___AbsTableEltClass___compile_macros};
+  static val_t once_value_130 = NIT_NULL; /* Once value for string variable[5]*/
+  static val_t once_value_131 = NIT_NULL; /* Once value for string variable[5]*/
+  static val_t once_value_132 = NIT_NULL; /* Once value for string variable[5]*/
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[5]: Once String constant */
+  if (once_value_130 != NIT_NULL) variable[5] = once_value_130;
+  else {
+    variable[5] = NEW_String_string___String___with_native(BOX_NativeString("#define "), TAG_Int(8)) /*new String*/;
+    once_value_130 = variable[5];
+  }
+  /* Register variable[5]: Result */
+  /* Ensure var variable[5]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_compiling_global___AbsTableEltClass___symbol(variable[0])(variable[0]) /*AbsTableEltClass::symbol*/;
+  /* Ensure var variable[5]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
+  /* Register variable[5]: Once String constant */
+  if (once_value_131 != NIT_NULL) variable[5] = once_value_131;
+  else {
+    variable[5] = NEW_String_string___String___with_native(BOX_NativeString(" ("), TAG_Int(2)) /*new String*/;
+    once_value_131 = variable[5];
+  }
+  /* Register variable[5]: Result */
+  /* Ensure var variable[5]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
+  variable[5] =  variable[2] /*value*/ /* Ensure var: super-string element*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
+  /* Register variable[5]: Once String constant */
+  if (once_value_132 != NIT_NULL) variable[5] = once_value_132;
+  else {
+    variable[5] = NEW_String_string___String___with_native(BOX_NativeString(")"), TAG_Int(1)) /*new String*/;
+    once_value_132 = variable[5];
+  }
+  /* Register variable[5]: Result */
+  /* Ensure var variable[5]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/;
+  CALL_compiling_base___CompilerVisitor___add_decl( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*CompilerVisitor::add_decl*/;
+  return_label129: while(false);
   tracehead = trace.prev;
-  return variable1;
+  return;
 }
-void compiling_global___TableEltClassPos___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltClassPos::init (src/compiling//compiling_global.nit:628,2--630:18)"};
-  val_t variable0;
+void compiling_global___AbsTableEltClass___init(val_t  self, val_t  param0, int* init_table) {
+  struct trace_t trace = {NULL, NULL, 658, LOCATE_compiling_global___AbsTableEltClass___init};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltClassPos].i]) return;
-  ATTR_compiling_global___TableEltClassPos____local_class( self) /*TableEltClassPos::_local_class*/ =  variable0 /*c*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltClassPos].i] = 1;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AbsTableEltClass].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_compiling_global___AbsTableEltClass____local_class(variable[0]) /*AbsTableEltClass::_local_class*/ =  variable[1] /*c*/;
+  return_label133: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_AbsTableEltClass].i] = 1;
   tracehead = trace.prev;
   return;
 }
-val_t compiling_global___TableEltClassIdPos___symbol(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltClassIdPos::symbol (src/compiling//compiling_global.nit:636,2--54)"};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 = ATTR_compiling_global___TableEltClassPos____local_class( self) /*TableEltClassIdPos::_local_class*/;
-  variable0 = ((abstractmetamodel___MMLocalClass___global_t)CALL(variable0,COLOR_abstractmetamodel___MMLocalClass___global))(variable0) /*MMLocalClass::global*/;
-  variable0 = ((compiling_base___MMGlobalClass___id_id_t)CALL(variable0,COLOR_compiling_base___MMGlobalClass___id_id))(variable0) /*MMGlobalClass::id_id*/;
-  goto return_label67;
-  return_label67: while(false);
-  tracehead = trace.prev;
-  return variable0;
-}
-val_t compiling_global___TableEltClassIdPos___value(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltClassIdPos::value (src/compiling//compiling_global.nit:637,2--639:83)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-  val_t variable10;
-  val_t variable11;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = NEW_string___String___init(); /*new String*/
-  variable2 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-  variable3 = variable2;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable3) /*String::append*/;
-  variable4 = ((compiling_global___GlobalAnalysis___compiled_classes_t)CALL( variable0 /*ga*/,COLOR_compiling_global___GlobalAnalysis___compiled_classes))( variable0 /*ga*/) /*GlobalAnalysis::compiled_classes*/;
-  variable5 = ATTR_compiling_global___TableEltClassPos____local_class( self) /*TableEltClassIdPos::_local_class*/;
-  variable5 = ((abstractmetamodel___MMLocalClass___global_t)CALL(variable5,COLOR_abstractmetamodel___MMLocalClass___global))(variable5) /*MMLocalClass::global*/;
-  variable4 = ((abstract_collection___CoupleMap_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4, variable5) /*HashMap::[]*/;
-  variable4 = ((compiling_global___CompiledClass___id_t)CALL(variable4,COLOR_compiling_global___CompiledClass___id))(variable4) /*CompiledClass::id*/;
-  variable5 = variable4;
-  variable5 = ((string___String___to_s_t)CALL(variable5,COLOR_string___Object___to_s))(variable5) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable5) /*String::append*/;
-  variable6 = NEW_string___String___with_native(BOX_NativeString(" /* Id of "), TAG_Int(10)); /*new String*/
-  variable7 = variable6;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable7) /*String::append*/;
-  variable8 = ATTR_compiling_global___TableEltClassPos____local_class( self) /*TableEltClassIdPos::_local_class*/;
-  variable9 = variable8;
-  variable9 = ((string___String___to_s_t)CALL(variable9,COLOR_string___Object___to_s))(variable9) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable9) /*String::append*/;
-  variable10 = NEW_string___String___with_native(BOX_NativeString(" */"), TAG_Int(3)); /*new String*/
-  variable11 = variable10;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable11) /*String::append*/;
-  goto return_label68;
-  return_label68: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-void compiling_global___TableEltClassIdPos___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltClassIdPos::init (src/compiling//compiling_global.nit:642,2--17)"};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltClassIdPos].i]) return;
-  ((compiling_global___TableEltClassPos___init_t)CALL( self,COLOR_compiling_global___TableEltClassPos___init))( self,  param0, init_table /*YYY*/) /*TableEltClassPos::init*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltClassIdPos].i] = 1;
+val_t compiling_global___AbsTableEltClass___symbol(val_t  self) {
+  struct trace_t trace = {NULL, NULL, 663, LOCATE_compiling_global___AbsTableEltClass___symbol};
+  val_t *variable = NULL;
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  fprintf(stderr, "Deferred method called");
+  fprintf(stderr, " (%s:%d)\n", LOCATE_compiling_global, 663);
+  nit_exit(1);
   tracehead = trace.prev;
-  return;
+  return NIT_NULL;
+}
+val_t compiling_global___TableEltClass___is_related_to(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 676, LOCATE_compiling_global___TableEltClass___is_related_to};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstractmetamodel___MMLocalClass___module( variable[1] /*c*/)( variable[1] /*c*/) /*MMLocalClass::module*/;
+  /* Register variable[5]: Result */
+  variable[5] = ATTR_compiling_global___AbsTableEltClass____local_class(variable[0]) /*AbsTableEltClass::_local_class*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_abstractmetamodel___MMLocalClass___global(variable[5])(variable[5]) /*MMLocalClass::global*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstractmetamodel___MMModule_____bra(variable[4])(variable[4], variable[5]) /*MMModule::[]*/;
+  variable[3] = variable[4];
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstractmetamodel___MMLocalClass___cshe( variable[1] /*c*/)( variable[1] /*c*/) /*MMLocalClass::cshe*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_partial_order___PartialOrderElement_____leq(variable[4])(variable[4],  variable[3] /*bc*/) /*PartialOrderElement::<=*/;
+  variable[2] = variable[4];
+  goto return_label134;
+  return_label134: while(false);
+  tracehead = trace.prev;
+  return variable[2];
+}
+val_t compiling_global___TableEltClassId___value(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 689, LOCATE_compiling_global___TableEltClassId___value};
+  static val_t once_value_136 = NIT_NULL; /* Once value for string variable[4]*/
+  static val_t once_value_137 = NIT_NULL; /* Once value for string variable[4]*/
+  static val_t once_value_138 = NIT_NULL; /* Once value for string variable[4]*/
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_136 != NIT_NULL) variable[4] = once_value_136;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+    once_value_136 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_compiling_global___GlobalAnalysis___compiled_classes( variable[1] /*ga*/)( variable[1] /*ga*/) /*GlobalAnalysis::compiled_classes*/;
+  /* Register variable[5]: Result */
+  variable[5] = ATTR_compiling_global___AbsTableEltClass____local_class(variable[0]) /*AbsTableEltClass::_local_class*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_abstractmetamodel___MMLocalClass___global(variable[5])(variable[5]) /*MMLocalClass::global*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4], variable[5]) /*CoupleMap::[]*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_compiling_global___CompiledClass___id(variable[4])(variable[4]) /*CompiledClass::id*/;
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_137 != NIT_NULL) variable[4] = once_value_137;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString(" /* Id of "), TAG_Int(10)) /*new String*/;
+    once_value_137 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_compiling_global___AbsTableEltClass____local_class(variable[0]) /*AbsTableEltClass::_local_class*/;
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_138 != NIT_NULL) variable[4] = once_value_138;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString(" */"), TAG_Int(3)) /*new String*/;
+    once_value_138 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
+  variable[2] = variable[3];
+  goto return_label135;
+  return_label135: while(false);
+  tracehead = trace.prev;
+  return variable[2];
 }
-val_t compiling_global___TableEltClassInitTablePos___symbol(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltClassInitTablePos::symbol (src/compiling//compiling_global.nit:647,2--66)"};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 = ATTR_compiling_global___TableEltClassPos____local_class( self) /*TableEltClassInitTablePos::_local_class*/;
-  variable0 = ((abstractmetamodel___MMLocalClass___global_t)CALL(variable0,COLOR_abstractmetamodel___MMLocalClass___global))(variable0) /*MMLocalClass::global*/;
-  variable0 = ((compiling_base___MMGlobalClass___init_table_pos_id_t)CALL(variable0,COLOR_compiling_base___MMGlobalClass___init_table_pos_id))(variable0) /*MMGlobalClass::init_table_pos_id*/;
-  goto return_label70;
-  return_label70: while(false);
-  tracehead = trace.prev;
-  return variable0;
-}
-val_t compiling_global___TableEltClassInitTablePos___value(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltClassInitTablePos::value (src/compiling//compiling_global.nit:648,2--650:57)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-  val_t variable10;
-  val_t variable11;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = NEW_string___String___init(); /*new String*/
-  variable2 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-  variable3 = variable2;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable3) /*String::append*/;
-  variable4 = ((compiling_global___ColorContext___color_t)CALL( variable0 /*ga*/,COLOR_compiling_global___ColorContext___color))( variable0 /*ga*/,  self) /*GlobalAnalysis::color*/;
-  variable5 = variable4;
-  variable5 = ((string___String___to_s_t)CALL(variable5,COLOR_string___Object___to_s))(variable5) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable5) /*String::append*/;
-  variable6 = NEW_string___String___with_native(BOX_NativeString(" /* Color of "), TAG_Int(13)); /*new String*/
-  variable7 = variable6;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable7) /*String::append*/;
-  variable8 = ATTR_compiling_global___TableEltClassPos____local_class( self) /*TableEltClassInitTablePos::_local_class*/;
-  variable9 = variable8;
-  variable9 = ((string___String___to_s_t)CALL(variable9,COLOR_string___Object___to_s))(variable9) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable9) /*String::append*/;
-  variable10 = NEW_string___String___with_native(BOX_NativeString(" */"), TAG_Int(3)); /*new String*/
-  variable11 = variable10;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable11) /*String::append*/;
-  goto return_label71;
-  return_label71: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-val_t compiling_global___TableEltClassInitTablePos___compile_to_c(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltClassInitTablePos::compile_to_c (src/compiling//compiling_global.nit:652,2--661:93)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-    val_t variable6;
-    val_t variable7;
-    val_t variable8;
-  val_t variable9;
-  val_t variable10;
-  val_t variable11;
-  val_t variable12;
-  val_t variable13;
-  val_t variable14;
-  val_t variable15;
-  val_t variable16;
-  val_t variable17;
-  val_t variable18;
-  val_t variable19;
-  val_t variable20;
-  val_t variable21;
-  val_t variable22;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable3 = ((compiling_global___CompilerVisitor___global_analysis_t)CALL( variable0 /*v*/,COLOR_compiling_global___CompilerVisitor___global_analysis))( variable0 /*v*/) /*CompilerVisitor::global_analysis*/;
-  variable2 = variable3;
-  variable4 = ((compiling_global___GlobalAnalysis___compiled_classes_t)CALL( variable2 /*ga*/,COLOR_compiling_global___GlobalAnalysis___compiled_classes))( variable2 /*ga*/) /*GlobalAnalysis::compiled_classes*/;
-  variable5 = ATTR_compiling_global___TableEltClassPos____local_class( self) /*TableEltClassInitTablePos::_local_class*/;
-  variable5 = ((abstractmetamodel___MMLocalClass___global_t)CALL(variable5,COLOR_abstractmetamodel___MMLocalClass___global))(variable5) /*MMLocalClass::global*/;
-  variable4 = ((abstract_collection___CoupleMap_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4, variable5) /*HashMap::[]*/;
-  variable3 = variable4;
-  variable5 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( variable1 /*c*/,COLOR_abstractmetamodel___MMLocalClass___cshe))( variable1 /*c*/) /*MMLocalClass::cshe*/;
-  variable5 = ((partial_order___PartialOrderElement___reverse_linear_extension_t)CALL(variable5,COLOR_partial_order___PartialOrderElement___reverse_linear_extension))(variable5) /*PartialOrderElement::reverse_linear_extension*/;
-  variable4 = variable5;
-  variable5 =  TAG_Int(0);
+val_t compiling_global___TableEltClassId___symbol(val_t  self) {
+  struct trace_t trace = {NULL, NULL, 687, LOCATE_compiling_global___TableEltClassId___symbol};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Method return value and escape marker */
+  /* Register variable[2]: Result */
+  variable[2] = ATTR_compiling_global___AbsTableEltClass____local_class(variable[0]) /*AbsTableEltClass::_local_class*/;
+  /* Register variable[2]: Result */
+  variable[2] = CALL_abstractmetamodel___MMLocalClass___global(variable[2])(variable[2]) /*MMLocalClass::global*/;
+  /* Register variable[2]: Result */
+  variable[2] = CALL_compiling_base___MMGlobalClass___id_id(variable[2])(variable[2]) /*MMGlobalClass::id_id*/;
+  variable[1] = variable[2];
+  goto return_label139;
+  return_label139: while(false);
+  tracehead = trace.prev;
+  return variable[1];
+}
+val_t compiling_global___TableEltClassInitTable___compile_to_c(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 700, LOCATE_compiling_global___TableEltClassInitTable___compile_to_c};
+  static val_t once_value_143 = NIT_NULL; /* Once value for string variable[9]*/
+  static val_t once_value_144 = NIT_NULL; /* Once value for string variable[9]*/
+  static val_t once_value_145 = NIT_NULL; /* Once value for string variable[9]*/
+  static val_t once_value_146 = NIT_NULL; /* Once value for string variable[9]*/
+  static val_t once_value_147 = NIT_NULL; /* Once value for string variable[9]*/
+  val_t variable[12];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Local variable */
+  /* Register variable[5]: Result */
+  variable[5] = CALL_compiling_global___GlobalCompilerVisitor___global_analysis( variable[1] /*v*/)( variable[1] /*v*/) /*GlobalCompilerVisitor::global_analysis*/;
+  variable[4] = variable[5];
+  /* Register variable[5]: Local variable */
+  /* Register variable[6]: Result */
+  variable[6] = CALL_compiling_global___GlobalAnalysis___compiled_classes( variable[4] /*ga*/)( variable[4] /*ga*/) /*GlobalAnalysis::compiled_classes*/;
+  /* Register variable[7]: Result */
+  variable[7] = ATTR_compiling_global___AbsTableEltClass____local_class(variable[0]) /*AbsTableEltClass::_local_class*/;
+  /* Register variable[7]: Result */
+  variable[7] = CALL_abstractmetamodel___MMLocalClass___global(variable[7])(variable[7]) /*MMLocalClass::global*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_abstract_collection___MapRead_____bra(variable[6])(variable[6], variable[7]) /*CoupleMap::[]*/;
+  variable[5] = variable[6];
+  /* Register variable[6]: Local variable */
+  /* Register variable[7]: Result */
+  variable[7] = CALL_abstractmetamodel___MMLocalClass___cshe( variable[2] /*c*/)( variable[2] /*c*/) /*MMLocalClass::cshe*/;
+  /* Register variable[7]: Result */
+  variable[7] = CALL_partial_order___PartialOrderElement___reverse_linear_extension(variable[7])(variable[7]) /*PartialOrderElement::reverse_linear_extension*/;
+  variable[6] = variable[7];
+  /* Register variable[7]: Local variable */
+  variable[7] =  TAG_Int(0);
   while (true) { /*while*/
-    variable6 =  variable5 /*i*/;
-    variable7 = TAG_Bool(UNTAG_Int( variable6 /*index*/)>=UNTAG_Int( TAG_Int(0)));
-    variable8 = variable7;
-    if (UNTAG_Bool(variable8)) { /* and */
-      variable8 = ATTR_array___AbstractArray____length( variable4 /*linext*/) /*Array::_length*/;
-      variable8 = TAG_Bool(UNTAG_Int( variable6 /*index*/)<UNTAG_Int(variable8));
+    /* Register variable[8]: Local variable */
+    variable[8] =  variable[6] /*linext*/;
+    /* Register variable[9]: Local variable */
+    variable[9] =  variable[7] /*i*/;
+    /* Register variable[10]: Method return value and escape marker */
+    /* Register variable[11]: Result */
+    variable[11] = TAG_Bool(UNTAG_Int( variable[9] /*index*/)>=UNTAG_Int( TAG_Int(0)));
+    /* Ensure var variable[11]: Left 'and' operand*/
+    if (UNTAG_Bool(variable[11])) { /* and */
+      /* Register variable[11]: Result */
+      variable[11] = ATTR_array___AbstractArrayRead____length(variable[8]) /*AbstractArrayRead::_length*/;
+      /* Register variable[11]: Result */
+      variable[11] = TAG_Bool(UNTAG_Int( variable[9] /*index*/)<UNTAG_Int(variable[11]));
     }
-    variable7 = variable8;
-    if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert 'index'  failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
-    variable7 = ATTR_array___Array____items( variable4 /*linext*/) /*Array::_items*/;
-    variable7 = UNBOX_NativeArray(variable7)[UNTAG_Int( variable6 /*index*/)];
-    goto return_label74;
-    return_label74: while(false);
-    variable6 = variable7;
-    variable6 = ((abstractmetamodel___MMLocalClass___global_t)CALL(variable6,COLOR_abstractmetamodel___MMLocalClass___global))(variable6) /*MMLocalClass::global*/;
-    variable7 = ATTR_compiling_global___TableEltClassPos____local_class( self) /*TableEltClassInitTablePos::_local_class*/;
-    variable7 = ((abstractmetamodel___MMLocalClass___global_t)CALL(variable7,COLOR_abstractmetamodel___MMLocalClass___global))(variable7) /*MMLocalClass::global*/;
-    variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable6 == variable7) || ((variable6 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable6,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable6,variable7)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable6,COLOR_kernel___Object_____eqeq))(variable6, variable7) /*MMGlobalClass::==*/)))))));
-    if (!UNTAG_Bool(variable6)) break; /* while*/
-    variable5 = TAG_Int(UNTAG_Int(variable5)+UNTAG_Int( TAG_Int(1))) /*i*/;
-    continue_73: while(0);
-  }
-  break_73: while(0);
-  variable6 = NEW_string___String___init(); /*new String*/
-  variable7 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-  variable8 = variable7;
-  ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable8) /*String::append*/;
-  variable9 =  variable5 /*i*/;
-  variable9 = ((string___String___to_s_t)CALL(variable9,COLOR_string___Object___to_s))(variable9) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable9) /*String::append*/;
-  variable10 = NEW_string___String___with_native(BOX_NativeString(" /* "), TAG_Int(4)); /*new String*/
-  variable11 = variable10;
-  ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable11) /*String::append*/;
-  variable12 = ((compiling_global___ColorContext___color_t)CALL( variable2 /*ga*/,COLOR_compiling_global___ColorContext___color))( variable2 /*ga*/,  self) /*GlobalAnalysis::color*/;
-  variable13 = variable12;
-  variable13 = ((string___String___to_s_t)CALL(variable13,COLOR_string___Object___to_s))(variable13) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable13) /*String::append*/;
-  variable14 = NEW_string___String___with_native(BOX_NativeString(": "), TAG_Int(2)); /*new String*/
-  variable15 = variable14;
-  ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable15) /*String::append*/;
-  variable16 =  variable1 /*c*/;
-  variable16 = ((string___String___to_s_t)CALL(variable16,COLOR_string___Object___to_s))(variable16) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable16) /*String::append*/;
-  variable17 = NEW_string___String___with_native(BOX_NativeString(" < "), TAG_Int(3)); /*new String*/
-  variable18 = variable17;
-  ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable18) /*String::append*/;
-  variable19 = ((compiling_global___CompiledClass___local_class_t)CALL( variable3 /*cc*/,COLOR_compiling_global___CompiledClass___local_class))( variable3 /*cc*/) /*CompiledClass::local_class*/;
-  variable20 = variable19;
-  variable20 = ((string___String___to_s_t)CALL(variable20,COLOR_string___Object___to_s))(variable20) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable20) /*String::append*/;
-  variable21 = NEW_string___String___with_native(BOX_NativeString(": superclass init_table position */"), TAG_Int(35)); /*new String*/
-  variable22 = variable21;
-  ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable22) /*String::append*/;
-  variable2 = variable6;
-  goto return_label72;
-  return_label72: while(false);
-  tracehead = trace.prev;
-  return variable2;
-}
-void compiling_global___TableEltClassInitTablePos___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltClassInitTablePos::init (src/compiling//compiling_global.nit:664,2--17)"};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltClassInitTablePos].i]) return;
-  ((compiling_global___TableEltClassPos___init_t)CALL( self,COLOR_compiling_global___TableEltClassPos___init))( self,  param0, init_table /*YYY*/) /*TableEltClassPos::init*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltClassInitTablePos].i] = 1;
+    /* Register variable[11]: Result */
+    if (!UNTAG_Bool(variable[11])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_compiling_global, 234); nit_exit(1);}
+    /* Register variable[11]: Result */
+    variable[11] = ATTR_array___Array____items(variable[8]) /*Array::_items*/;
+    /* Register variable[11]: Result */
+    variable[11] = UNBOX_NativeArray(variable[11])[UNTAG_Int( variable[9] /*index*/)];
+    variable[10] = variable[11];
+    goto return_label142;
+    return_label142: while(false);
+    /* Register variable[8]: Result */
+    variable[8] = variable[10];
+    /* Register variable[8]: Result */
+    variable[8] = CALL_abstractmetamodel___MMLocalClass___global(variable[8])(variable[8]) /*MMLocalClass::global*/;
+    /* Register variable[9]: Result */
+    variable[9] = ATTR_compiling_global___AbsTableEltClass____local_class(variable[0]) /*AbsTableEltClass::_local_class*/;
+    /* Register variable[9]: Result */
+    variable[9] = CALL_abstractmetamodel___MMLocalClass___global(variable[9])(variable[9]) /*MMLocalClass::global*/;
+    /* Register variable[8]: Result */
+    variable[8] = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable[8] == variable[9]) || ((variable[8] != NIT_NULL) && ((CALL_kernel___Object_____eqeq(variable[8])==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable[8],variable[9])):(UNTAG_Bool(CALL_kernel___Object_____eqeq(variable[8])(variable[8], variable[9]) /*Object::==*/)))))));
+    if (!UNTAG_Bool(variable[8])) break; /* while*/
+    variable[7] = TAG_Int(UNTAG_Int(variable[7])+UNTAG_Int( TAG_Int(1))) /*i*/;
+    continue_141: while(0);
+  }
+  break_141: while(0);
+  variable[8] = NEW_Array_array___Array___with_capacity(TAG_Int(9)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[9]: Once String constant */
+  if (once_value_143 != NIT_NULL) variable[9] = once_value_143;
+  else {
+    variable[9] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+    once_value_143 = variable[9];
+  }
+  /* Register variable[9]: Result */
+  /* Ensure var variable[9]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
+  variable[9] =  variable[7] /*i*/ /* Ensure var: super-string element*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[9]: Once String constant */
+  if (once_value_144 != NIT_NULL) variable[9] = once_value_144;
+  else {
+    variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" /* "), TAG_Int(4)) /*new String*/;
+    once_value_144 = variable[9];
+  }
+  /* Register variable[9]: Result */
+  /* Ensure var variable[9]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
+  /* Register variable[9]: Result */
+  variable[9] = CALL_compiling_global___ColorContext___color( variable[4] /*ga*/)( variable[4] /*ga*/, variable[0]) /*ColorContext::color*/;
+  /* Ensure var variable[9]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[9]: Once String constant */
+  if (once_value_145 != NIT_NULL) variable[9] = once_value_145;
+  else {
+    variable[9] = NEW_String_string___String___with_native(BOX_NativeString(": "), TAG_Int(2)) /*new String*/;
+    once_value_145 = variable[9];
+  }
+  /* Register variable[9]: Result */
+  /* Ensure var variable[9]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
+  variable[9] =  variable[2] /*c*/ /* Ensure var: super-string element*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[9]: Once String constant */
+  if (once_value_146 != NIT_NULL) variable[9] = once_value_146;
+  else {
+    variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" < "), TAG_Int(3)) /*new String*/;
+    once_value_146 = variable[9];
+  }
+  /* Register variable[9]: Result */
+  /* Ensure var variable[9]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
+  /* Register variable[9]: Result */
+  variable[9] = CALL_compiling_global___CompiledClass___local_class( variable[5] /*cc*/)( variable[5] /*cc*/) /*CompiledClass::local_class*/;
+  /* Ensure var variable[9]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[9]: Once String constant */
+  if (once_value_147 != NIT_NULL) variable[9] = once_value_147;
+  else {
+    variable[9] = NEW_String_string___String___with_native(BOX_NativeString(": superclass init_table position */"), TAG_Int(35)) /*new String*/;
+    once_value_147 = variable[9];
+  }
+  /* Register variable[9]: Result */
+  /* Ensure var variable[9]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[8])(variable[8], variable[9]) /*AbstractArray::add*/;
+  /* Register variable[8]: Result */
+  variable[8] = CALL_string___Object___to_s(variable[8])(variable[8]) /*Object::to_s*/;
+  variable[3] = variable[8];
+  goto return_label140;
+  return_label140: while(false);
   tracehead = trace.prev;
-  return;
+  return variable[3];
 }
-val_t compiling_global___TableEltClassColorPos___symbol(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltClassColorPos::symbol (src/compiling//compiling_global.nit:669,2--57)"};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 = ATTR_compiling_global___TableEltClassPos____local_class( self) /*TableEltClassColorPos::_local_class*/;
-  variable0 = ((abstractmetamodel___MMLocalClass___global_t)CALL(variable0,COLOR_abstractmetamodel___MMLocalClass___global))(variable0) /*MMLocalClass::global*/;
-  variable0 = ((compiling_base___MMGlobalClass___color_id_t)CALL(variable0,COLOR_compiling_base___MMGlobalClass___color_id))(variable0) /*MMGlobalClass::color_id*/;
-  goto return_label76;
-  return_label76: while(false);
-  tracehead = trace.prev;
-  return variable0;
-}
-val_t compiling_global___TableEltClassColorPos___value(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltClassColorPos::value (src/compiling//compiling_global.nit:670,2--672:57)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-  val_t variable10;
-  val_t variable11;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = NEW_string___String___init(); /*new String*/
-  variable2 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-  variable3 = variable2;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable3) /*String::append*/;
-  variable4 = ((compiling_global___ColorContext___color_t)CALL( variable0 /*ga*/,COLOR_compiling_global___ColorContext___color))( variable0 /*ga*/,  self) /*GlobalAnalysis::color*/;
-  variable5 = variable4;
-  variable5 = ((string___String___to_s_t)CALL(variable5,COLOR_string___Object___to_s))(variable5) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable5) /*String::append*/;
-  variable6 = NEW_string___String___with_native(BOX_NativeString(" /* Color of "), TAG_Int(13)); /*new String*/
-  variable7 = variable6;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable7) /*String::append*/;
-  variable8 = ATTR_compiling_global___TableEltClassPos____local_class( self) /*TableEltClassColorPos::_local_class*/;
-  variable9 = variable8;
-  variable9 = ((string___String___to_s_t)CALL(variable9,COLOR_string___Object___to_s))(variable9) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable9) /*String::append*/;
-  variable10 = NEW_string___String___with_native(BOX_NativeString(" */"), TAG_Int(3)); /*new String*/
-  variable11 = variable10;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable11) /*String::append*/;
-  goto return_label77;
-  return_label77: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-val_t compiling_global___TableEltClassColorPos___compile_to_c(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltClassColorPos::compile_to_c (src/compiling//compiling_global.nit:674,2--678:94)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-  val_t variable10;
-  val_t variable11;
-  val_t variable12;
-  val_t variable13;
-  val_t variable14;
-  val_t variable15;
-  val_t variable16;
-  val_t variable17;
-  val_t variable18;
-  val_t variable19;
-  val_t variable20;
-  val_t variable21;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable3 = ((compiling_global___CompilerVisitor___global_analysis_t)CALL( variable0 /*v*/,COLOR_compiling_global___CompilerVisitor___global_analysis))( variable0 /*v*/) /*CompilerVisitor::global_analysis*/;
-  variable2 = variable3;
-  variable4 = ((compiling_global___GlobalAnalysis___compiled_classes_t)CALL( variable2 /*ga*/,COLOR_compiling_global___GlobalAnalysis___compiled_classes))( variable2 /*ga*/) /*GlobalAnalysis::compiled_classes*/;
-  variable5 = ATTR_compiling_global___TableEltClassPos____local_class( self) /*TableEltClassColorPos::_local_class*/;
-  variable5 = ((abstractmetamodel___MMLocalClass___global_t)CALL(variable5,COLOR_abstractmetamodel___MMLocalClass___global))(variable5) /*MMLocalClass::global*/;
-  variable4 = ((abstract_collection___CoupleMap_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4, variable5) /*HashMap::[]*/;
-  variable3 = variable4;
-  variable4 = NEW_string___String___init(); /*new String*/
-  variable5 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-  variable6 = variable5;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable6) /*String::append*/;
-  variable7 = ((compiling_global___CompiledClass___id_t)CALL( variable3 /*cc*/,COLOR_compiling_global___CompiledClass___id))( variable3 /*cc*/) /*CompiledClass::id*/;
-  variable8 = variable7;
-  variable8 = ((string___String___to_s_t)CALL(variable8,COLOR_string___Object___to_s))(variable8) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable8) /*String::append*/;
-  variable9 = NEW_string___String___with_native(BOX_NativeString(" /* "), TAG_Int(4)); /*new String*/
-  variable10 = variable9;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable10) /*String::append*/;
-  variable11 = ((compiling_global___ColorContext___color_t)CALL( variable2 /*ga*/,COLOR_compiling_global___ColorContext___color))( variable2 /*ga*/,  self) /*GlobalAnalysis::color*/;
-  variable12 = variable11;
-  variable12 = ((string___String___to_s_t)CALL(variable12,COLOR_string___Object___to_s))(variable12) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable12) /*String::append*/;
-  variable13 = NEW_string___String___with_native(BOX_NativeString(": "), TAG_Int(2)); /*new String*/
-  variable14 = variable13;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable14) /*String::append*/;
-  variable15 =  variable1 /*c*/;
-  variable15 = ((string___String___to_s_t)CALL(variable15,COLOR_string___Object___to_s))(variable15) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable15) /*String::append*/;
-  variable16 = NEW_string___String___with_native(BOX_NativeString(" < "), TAG_Int(3)); /*new String*/
-  variable17 = variable16;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable17) /*String::append*/;
-  variable18 = ((compiling_global___CompiledClass___local_class_t)CALL( variable3 /*cc*/,COLOR_compiling_global___CompiledClass___local_class))( variable3 /*cc*/) /*CompiledClass::local_class*/;
-  variable19 = variable18;
-  variable19 = ((string___String___to_s_t)CALL(variable19,COLOR_string___Object___to_s))(variable19) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable19) /*String::append*/;
-  variable20 = NEW_string___String___with_native(BOX_NativeString(": superclass typecheck marker */"), TAG_Int(32)); /*new String*/
-  variable21 = variable20;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable21) /*String::append*/;
-  variable2 = variable4;
-  goto return_label78;
-  return_label78: while(false);
-  tracehead = trace.prev;
-  return variable2;
-}
-void compiling_global___TableEltClassColorPos___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltClassColorPos::init (src/compiling//compiling_global.nit:681,2--17)"};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltClassColorPos].i]) return;
-  ((compiling_global___TableEltClassPos___init_t)CALL( self,COLOR_compiling_global___TableEltClassPos___init))( self,  param0, init_table /*YYY*/) /*TableEltClassPos::init*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltClassColorPos].i] = 1;
+val_t compiling_global___TableEltClassInitTable___symbol(val_t  self) {
+  struct trace_t trace = {NULL, NULL, 698, LOCATE_compiling_global___TableEltClassInitTable___symbol};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Method return value and escape marker */
+  /* Register variable[2]: Result */
+  variable[2] = ATTR_compiling_global___AbsTableEltClass____local_class(variable[0]) /*AbsTableEltClass::_local_class*/;
+  /* Register variable[2]: Result */
+  variable[2] = CALL_abstractmetamodel___MMLocalClass___global(variable[2])(variable[2]) /*MMLocalClass::global*/;
+  /* Register variable[2]: Result */
+  variable[2] = CALL_compiling_base___MMGlobalClass___init_table_pos_id(variable[2])(variable[2]) /*MMGlobalClass::init_table_pos_id*/;
+  variable[1] = variable[2];
+  goto return_label148;
+  return_label148: while(false);
   tracehead = trace.prev;
-  return;
+  return variable[1];
 }
-val_t compiling_global___TableEltBaseAttrPos___symbol(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltBaseAttrPos::symbol (src/compiling//compiling_global.nit:687,2--87)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-  val_t variable10;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 = NEW_string___String___init(); /*new String*/
-  variable1 = NEW_string___String___with_native(BOX_NativeString("COLOR_"), TAG_Int(6)); /*new String*/
-  variable2 = variable1;
-  ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable2) /*String::append*/;
-  variable3 = ATTR_compiling_global___TableEltBaseAttrPos____local_class( self) /*TableEltBaseAttrPos::_local_class*/;
-  variable3 = ((abstractmetamodel___MMLocalClass___module_t)CALL(variable3,COLOR_abstractmetamodel___MMLocalClass___module))(variable3) /*MMSrcLocalClass::module*/;
-  variable4 = variable3;
-  variable4 = ((string___String___to_s_t)CALL(variable4,COLOR_string___Object___to_s))(variable4) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable4) /*String::append*/;
-  variable5 = NEW_string___String___with_native(BOX_NativeString("_"), TAG_Int(1)); /*new String*/
-  variable6 = variable5;
-  ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable6) /*String::append*/;
-  variable7 = ATTR_compiling_global___TableEltBaseAttrPos____local_class( self) /*TableEltBaseAttrPos::_local_class*/;
-  variable7 = ((abstractmetamodel___MMLocalClass___name_t)CALL(variable7,COLOR_abstractmetamodel___MMLocalClass___name))(variable7) /*MMSrcLocalClass::name*/;
-  variable8 = variable7;
-  variable8 = ((string___String___to_s_t)CALL(variable8,COLOR_string___Object___to_s))(variable8) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable8) /*String::append*/;
-  variable9 = NEW_string___String___with_native(BOX_NativeString("_BASEATTR"), TAG_Int(9)); /*new String*/
-  variable10 = variable9;
-  ((string___String___append_t)CALL(variable0,COLOR_abstract_collection___IndexedCollection___append))(variable0, variable10) /*String::append*/;
-  goto return_label80;
-  return_label80: while(false);
-  tracehead = trace.prev;
-  return variable0;
-}
-val_t compiling_global___TableEltBaseAttrPos___value(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltBaseAttrPos::value (src/compiling//compiling_global.nit:688,2--690:63)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-  val_t variable10;
-  val_t variable11;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = NEW_string___String___init(); /*new String*/
-  variable2 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-  variable3 = variable2;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable3) /*String::append*/;
-  variable4 = ((compiling_global___ColorContext___color_t)CALL( variable0 /*ga*/,COLOR_compiling_global___ColorContext___color))( variable0 /*ga*/,  self) /*GlobalAnalysis::color*/;
-  variable5 = variable4;
-  variable5 = ((string___String___to_s_t)CALL(variable5,COLOR_string___Object___to_s))(variable5) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable5) /*String::append*/;
-  variable6 = NEW_string___String___with_native(BOX_NativeString(" /* BaseAttrPos of "), TAG_Int(19)); /*new String*/
-  variable7 = variable6;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable7) /*String::append*/;
-  variable8 = ATTR_compiling_global___TableEltBaseAttrPos____local_class( self) /*TableEltBaseAttrPos::_local_class*/;
-  variable9 = variable8;
-  variable9 = ((string___String___to_s_t)CALL(variable9,COLOR_string___Object___to_s))(variable9) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable9) /*String::append*/;
-  variable10 = NEW_string___String___with_native(BOX_NativeString(" */"), TAG_Int(3)); /*new String*/
-  variable11 = variable10;
-  ((string___String___append_t)CALL(variable1,COLOR_abstract_collection___IndexedCollection___append))(variable1, variable11) /*String::append*/;
-  goto return_label81;
-  return_label81: while(false);
-  tracehead = trace.prev;
-  return variable1;
-}
-val_t compiling_global___TableEltBaseAttrPos___compile_to_c(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltBaseAttrPos::compile_to_c (src/compiling//compiling_global.nit:693,2--697:150)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-  val_t variable10;
-  val_t variable11;
-  val_t variable12;
-  val_t variable13;
-  val_t variable14;
-  val_t variable15;
-  val_t variable16;
-  val_t variable17;
-  val_t variable18;
-  val_t variable19;
-  val_t variable20;
-  val_t variable21;
-  val_t variable22;
-  val_t variable23;
-  val_t variable24;
-  val_t variable25;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable3 = ((compiling_global___CompilerVisitor___global_analysis_t)CALL( variable0 /*v*/,COLOR_compiling_global___CompilerVisitor___global_analysis))( variable0 /*v*/) /*CompilerVisitor::global_analysis*/;
-  variable2 = variable3;
-  variable4 = ((compiling_global___GlobalAnalysis___compiled_classes_t)CALL( variable2 /*ga*/,COLOR_compiling_global___GlobalAnalysis___compiled_classes))( variable2 /*ga*/) /*GlobalAnalysis::compiled_classes*/;
-  variable5 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable1 /*c*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable1 /*c*/) /*MMLocalClass::global*/;
-  variable4 = ((abstract_collection___CoupleMap_____bra_t)CALL(variable4,COLOR_abstract_collection___Map_____bra))(variable4, variable5) /*HashMap::[]*/;
-  variable3 = variable4;
-  variable4 = NEW_string___String___init(); /*new String*/
-  variable5 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-  variable6 = variable5;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable6) /*String::append*/;
-  variable7 = ATTR_compiling_global___TableEltBaseAttrPos____local_class( self) /*TableEltBaseAttrPos::_local_class*/;
-  variable7 = ((compiling_global___MMSrcLocalClass___instance_layout_t)CALL(variable7,COLOR_compiling_global___MMSrcLocalClass___instance_layout))(variable7) /*MMSrcLocalClass::instance_layout*/;
-  variable7 = ((abstract_collection___IndexedCollection___first_t)CALL(variable7,COLOR_abstract_collection___Collection___first))(variable7) /*Array::first*/;
-  variable7 = ((compiling_global___ColorContext___color_t)CALL( variable3 /*cc*/,COLOR_compiling_global___ColorContext___color))( variable3 /*cc*/, variable7) /*CompiledClass::color*/;
-  variable8 = variable7;
-  variable8 = ((string___String___to_s_t)CALL(variable8,COLOR_string___Object___to_s))(variable8) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable8) /*String::append*/;
-  variable9 = NEW_string___String___with_native(BOX_NativeString(" /* "), TAG_Int(4)); /*new String*/
-  variable10 = variable9;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable10) /*String::append*/;
-  variable11 = ((compiling_global___ColorContext___color_t)CALL( variable2 /*ga*/,COLOR_compiling_global___ColorContext___color))( variable2 /*ga*/,  self) /*GlobalAnalysis::color*/;
-  variable12 = variable11;
-  variable12 = ((string___String___to_s_t)CALL(variable12,COLOR_string___Object___to_s))(variable12) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable12) /*String::append*/;
-  variable13 = NEW_string___String___with_native(BOX_NativeString(": Base attribut offset of "), TAG_Int(26)); /*new String*/
-  variable14 = variable13;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable14) /*String::append*/;
-  variable15 = ATTR_compiling_global___TableEltBaseAttrPos____local_class( self) /*TableEltBaseAttrPos::_local_class*/;
-  variable15 = ((abstractmetamodel___MMLocalClass___module_t)CALL(variable15,COLOR_abstractmetamodel___MMLocalClass___module))(variable15) /*MMSrcLocalClass::module*/;
-  variable16 = variable15;
-  variable16 = ((string___String___to_s_t)CALL(variable16,COLOR_string___Object___to_s))(variable16) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable16) /*String::append*/;
-  variable17 = NEW_string___String___with_native(BOX_NativeString("::"), TAG_Int(2)); /*new String*/
-  variable18 = variable17;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable18) /*String::append*/;
-  variable19 = ATTR_compiling_global___TableEltBaseAttrPos____local_class( self) /*TableEltBaseAttrPos::_local_class*/;
-  variable20 = variable19;
-  variable20 = ((string___String___to_s_t)CALL(variable20,COLOR_string___Object___to_s))(variable20) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable20) /*String::append*/;
-  variable21 = NEW_string___String___with_native(BOX_NativeString(" in "), TAG_Int(4)); /*new String*/
-  variable22 = variable21;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable22) /*String::append*/;
-  variable23 =  variable1 /*c*/;
-  variable23 = ((string___String___to_s_t)CALL(variable23,COLOR_string___Object___to_s))(variable23) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable23) /*String::append*/;
-  variable24 = NEW_string___String___with_native(BOX_NativeString(" */"), TAG_Int(3)); /*new String*/
-  variable25 = variable24;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable25) /*String::append*/;
-  variable2 = variable4;
-  goto return_label82;
-  return_label82: while(false);
-  tracehead = trace.prev;
-  return variable2;
-}
-void compiling_global___TableEltBaseAttrPos___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltBaseAttrPos::init (src/compiling//compiling_global.nit:700,2--702:18)"};
-  val_t variable0;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltBaseAttrPos].i]) return;
-  ATTR_compiling_global___TableEltBaseAttrPos____local_class( self) /*TableEltBaseAttrPos::_local_class*/ =  variable0 /*c*/;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltBaseAttrPos].i] = 1;
+val_t compiling_global___TableEltClassColor___compile_to_c(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 727, LOCATE_compiling_global___TableEltClassColor___compile_to_c};
+  static val_t once_value_150 = NIT_NULL; /* Once value for string variable[7]*/
+  static val_t once_value_151 = NIT_NULL; /* Once value for string variable[7]*/
+  static val_t once_value_152 = NIT_NULL; /* Once value for string variable[7]*/
+  static val_t once_value_153 = NIT_NULL; /* Once value for string variable[7]*/
+  static val_t once_value_154 = NIT_NULL; /* Once value for string variable[7]*/
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Local variable */
+  /* Register variable[5]: Result */
+  variable[5] = CALL_compiling_global___GlobalCompilerVisitor___global_analysis( variable[1] /*v*/)( variable[1] /*v*/) /*GlobalCompilerVisitor::global_analysis*/;
+  variable[4] = variable[5];
+  /* Register variable[5]: Local variable */
+  /* Register variable[6]: Result */
+  variable[6] = CALL_compiling_global___GlobalAnalysis___compiled_classes( variable[4] /*ga*/)( variable[4] /*ga*/) /*GlobalAnalysis::compiled_classes*/;
+  /* Register variable[7]: Result */
+  variable[7] = ATTR_compiling_global___AbsTableEltClass____local_class(variable[0]) /*AbsTableEltClass::_local_class*/;
+  /* Register variable[7]: Result */
+  variable[7] = CALL_abstractmetamodel___MMLocalClass___global(variable[7])(variable[7]) /*MMLocalClass::global*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_abstract_collection___MapRead_____bra(variable[6])(variable[6], variable[7]) /*CoupleMap::[]*/;
+  variable[5] = variable[6];
+  variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(9)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[7]: Once String constant */
+  if (once_value_150 != NIT_NULL) variable[7] = once_value_150;
+  else {
+    variable[7] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+    once_value_150 = variable[7];
+  }
+  /* Register variable[7]: Result */
+  /* Ensure var variable[7]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+  /* Register variable[7]: Result */
+  variable[7] = CALL_compiling_global___CompiledClass___id( variable[5] /*cc*/)( variable[5] /*cc*/) /*CompiledClass::id*/;
+  /* Ensure var variable[7]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[7]: Once String constant */
+  if (once_value_151 != NIT_NULL) variable[7] = once_value_151;
+  else {
+    variable[7] = NEW_String_string___String___with_native(BOX_NativeString(" /* "), TAG_Int(4)) /*new String*/;
+    once_value_151 = variable[7];
+  }
+  /* Register variable[7]: Result */
+  /* Ensure var variable[7]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+  /* Register variable[7]: Result */
+  variable[7] = CALL_compiling_global___ColorContext___color( variable[4] /*ga*/)( variable[4] /*ga*/, variable[0]) /*ColorContext::color*/;
+  /* Ensure var variable[7]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[7]: Once String constant */
+  if (once_value_152 != NIT_NULL) variable[7] = once_value_152;
+  else {
+    variable[7] = NEW_String_string___String___with_native(BOX_NativeString(": "), TAG_Int(2)) /*new String*/;
+    once_value_152 = variable[7];
+  }
+  /* Register variable[7]: Result */
+  /* Ensure var variable[7]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+  variable[7] =  variable[2] /*c*/ /* Ensure var: super-string element*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[7]: Once String constant */
+  if (once_value_153 != NIT_NULL) variable[7] = once_value_153;
+  else {
+    variable[7] = NEW_String_string___String___with_native(BOX_NativeString(" < "), TAG_Int(3)) /*new String*/;
+    once_value_153 = variable[7];
+  }
+  /* Register variable[7]: Result */
+  /* Ensure var variable[7]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+  /* Register variable[7]: Result */
+  variable[7] = CALL_compiling_global___CompiledClass___local_class( variable[5] /*cc*/)( variable[5] /*cc*/) /*CompiledClass::local_class*/;
+  /* Ensure var variable[7]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[7]: Once String constant */
+  if (once_value_154 != NIT_NULL) variable[7] = once_value_154;
+  else {
+    variable[7] = NEW_String_string___String___with_native(BOX_NativeString(": superclass typecheck marker */"), TAG_Int(32)) /*new String*/;
+    once_value_154 = variable[7];
+  }
+  /* Register variable[7]: Result */
+  /* Ensure var variable[7]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/;
+  variable[3] = variable[6];
+  goto return_label149;
+  return_label149: while(false);
   tracehead = trace.prev;
-  return;
+  return variable[3];
 }
-val_t compiling_global___TableEltComposite___length(val_t  self) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltComposite::length (src/compiling//compiling_global.nit:711,2--42)"};
-  val_t variable0;
+val_t compiling_global___TableEltClassColor___symbol(val_t  self) {
+  struct trace_t trace = {NULL, NULL, 720, LOCATE_compiling_global___TableEltClassColor___symbol};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Method return value and escape marker */
+  /* Register variable[2]: Result */
+  variable[2] = ATTR_compiling_global___AbsTableEltClass____local_class(variable[0]) /*AbsTableEltClass::_local_class*/;
+  /* Register variable[2]: Result */
+  variable[2] = CALL_abstractmetamodel___MMLocalClass___global(variable[2])(variable[2]) /*MMLocalClass::global*/;
+  /* Register variable[2]: Result */
+  variable[2] = CALL_compiling_base___MMGlobalClass___color_id(variable[2])(variable[2]) /*MMGlobalClass::color_id*/;
+  variable[1] = variable[2];
+  goto return_label155;
+  return_label155: while(false);
+  tracehead = trace.prev;
+  return variable[1];
+}
+val_t compiling_global___TableEltClassColor___value(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, NULL, 722, LOCATE_compiling_global___TableEltClassColor___value};
+  static val_t once_value_157 = NIT_NULL; /* Once value for string variable[4]*/
+  static val_t once_value_158 = NIT_NULL; /* Once value for string variable[4]*/
+  static val_t once_value_159 = NIT_NULL; /* Once value for string variable[4]*/
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 = ATTR_compiling_global___TableEltComposite____table( self) /*TableEltComposite::_table*/;
-  variable0 = ((array___AbstractArray___length_t)CALL(variable0,COLOR_abstract_collection___Collection___length))(variable0) /*Array::length*/;
-  goto return_label84;
-  return_label84: while(false);
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  variable[3] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_157 != NIT_NULL) variable[4] = once_value_157;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+    once_value_157 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_compiling_global___ColorContext___color( variable[1] /*ga*/)( variable[1] /*ga*/, variable[0]) /*ColorContext::color*/;
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_158 != NIT_NULL) variable[4] = once_value_158;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString(" /* Color of "), TAG_Int(13)) /*new String*/;
+    once_value_158 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_compiling_global___AbsTableEltClass____local_class(variable[0]) /*AbsTableEltClass::_local_class*/;
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[4]: Once String constant */
+  if (once_value_159 != NIT_NULL) variable[4] = once_value_159;
+  else {
+    variable[4] = NEW_String_string___String___with_native(BOX_NativeString(" */"), TAG_Int(3)) /*new String*/;
+    once_value_159 = variable[4];
+  }
+  /* Register variable[4]: Result */
+  /* Ensure var variable[4]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[3])(variable[3], variable[4]) /*AbstractArray::add*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_string___Object___to_s(variable[3])(variable[3]) /*Object::to_s*/;
+  variable[2] = variable[3];
+  goto return_label156;
+  return_label156: while(false);
   tracehead = trace.prev;
-  return variable0;
+  return variable[2];
 }
 val_t compiling_global___TableEltComposite___is_related_to(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltComposite::is_related_to (src/compiling//compiling_global.nit:712,2--64)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 742, LOCATE_compiling_global___TableEltComposite___is_related_to};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( variable0 /*c*/,COLOR_abstractmetamodel___MMLocalClass___cshe))( variable0 /*c*/) /*MMLocalClass::cshe*/;
-  variable2 = ATTR_compiling_global___TableEltComposite____cc( self) /*TableEltComposite::_cc*/;
-  variable2 = ((compiling_global___CompiledClass___local_class_t)CALL(variable2,COLOR_compiling_global___CompiledClass___local_class))(variable2) /*CompiledClass::local_class*/;
-  variable1 = ((partial_order___PartialOrderElement_____leq_t)CALL(variable1,COLOR_partial_order___PartialOrderElement_____leq))(variable1, variable2) /*PartialOrderElement::<=*/;
-  goto return_label85;
-  return_label85: while(false);
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = CALL_abstractmetamodel___MMLocalClass___cshe( variable[1] /*c*/)( variable[1] /*c*/) /*MMLocalClass::cshe*/;
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_compiling_global___TableEltComposite____cc(variable[0]) /*TableEltComposite::_cc*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_compiling_global___CompiledClass___local_class(variable[4])(variable[4]) /*CompiledClass::local_class*/;
+  /* Register variable[3]: Result */
+  variable[3] = CALL_partial_order___PartialOrderElement_____leq(variable[3])(variable[3], variable[4]) /*PartialOrderElement::<=*/;
+  variable[2] = variable[3];
+  goto return_label160;
+  return_label160: while(false);
   tracehead = trace.prev;
-  return variable1;
+  return variable[2];
 }
-void compiling_global___TableEltComposite___add(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltComposite::add (src/compiling//compiling_global.nit:714,2--717:19)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = ATTR_compiling_global___TableEltComposite____offsets( self) /*TableEltComposite::_offsets*/;
-  variable3 = ATTR_compiling_global___TableEltComposite____table( self) /*TableEltComposite::_table*/;
-  variable3 = ((array___AbstractArray___length_t)CALL(variable3,COLOR_abstract_collection___Collection___length))(variable3) /*Array::length*/;
-  ((hash___HashMap_____braeq_t)CALL(variable2,COLOR_abstract_collection___Map_____braeq))(variable2,  variable0 /*c*/, variable3) /*HashMap::[]=*/;
-  variable2 = ATTR_compiling_global___TableEltComposite____table( self) /*TableEltComposite::_table*/;
-  ((abstract_collection___IndexedCollection___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2,  variable1 /*tab*/) /*Array::append*/;
+val_t compiling_global___TableEltComposite___length(val_t  self) {
+  struct trace_t trace = {NULL, NULL, 741, LOCATE_compiling_global___TableEltComposite___length};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Method return value and escape marker */
+  /* Register variable[2]: Result */
+  variable[2] = ATTR_compiling_global___TableEltComposite____table(variable[0]) /*TableEltComposite::_table*/;
+  /* Register variable[2]: Result */
+  variable[2] = CALL_abstract_collection___Collection___length(variable[2])(variable[2]) /*AbstractArrayRead::length*/;
+  variable[1] = variable[2];
+  goto return_label161;
+  return_label161: while(false);
   tracehead = trace.prev;
-  return;
+  return variable[1];
 }
 val_t compiling_global___TableEltComposite___item(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltComposite::item (src/compiling//compiling_global.nit:720,2--38)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = ATTR_compiling_global___TableEltComposite____table( self) /*TableEltComposite::_table*/;
-  variable2 =  variable0 /*i*/;
-  variable3 = TAG_Bool(UNTAG_Int( variable2 /*index*/)>=UNTAG_Int( TAG_Int(0)));
-  variable4 = variable3;
-  if (UNTAG_Bool(variable4)) { /* and */
-    variable4 = variable1;
-    variable4 = ATTR_array___AbstractArray____length(variable4) /*Array::_length*/;
-    variable4 = TAG_Bool(UNTAG_Int( variable2 /*index*/)<UNTAG_Int(variable4));
-  }
-  variable3 = variable4;
-  if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert 'index'  failed: bin/../lib/standard//array.nit:229,3--46\n"); nit_exit(1);}
-  variable3 = variable1;
-  variable3 = ATTR_array___Array____items(variable3) /*Array::_items*/;
-  variable3 = UNBOX_NativeArray(variable3)[UNTAG_Int( variable2 /*index*/)];
-  goto return_label88;
-  return_label88: while(false);
-  variable1 = variable3;
-  goto return_label87;
-  return_label87: while(false);
-  tracehead = trace.prev;
-  return variable1;
+  struct trace_t trace = {NULL, NULL, 750, LOCATE_compiling_global___TableEltComposite___item};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Result */
+  variable[3] = ATTR_compiling_global___TableEltComposite____table(variable[0]) /*TableEltComposite::_table*/;
+  /* Register variable[4]: Local variable */
+  variable[4] = variable[3];
+  /* Register variable[5]: Local variable */
+  variable[5] =  variable[1] /*i*/;
+  /* Register variable[6]: Method return value and escape marker */
+  /* Register variable[7]: Result */
+  variable[7] = TAG_Bool(UNTAG_Int( variable[5] /*index*/)>=UNTAG_Int( TAG_Int(0)));
+  /* Ensure var variable[7]: Left 'and' operand*/
+  if (UNTAG_Bool(variable[7])) { /* and */
+    /* Register variable[7]: Result */
+    variable[7] = ATTR_array___AbstractArrayRead____length(variable[4]) /*AbstractArrayRead::_length*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Bool(UNTAG_Int( variable[5] /*index*/)<UNTAG_Int(variable[7]));
+  }
+  /* Register variable[7]: Result */
+  if (!UNTAG_Bool(variable[7])) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_compiling_global, 234); nit_exit(1);}
+  /* Register variable[7]: Result */
+  variable[7] = ATTR_array___Array____items(variable[4]) /*Array::_items*/;
+  /* Register variable[7]: Result */
+  variable[7] = UNBOX_NativeArray(variable[7])[UNTAG_Int( variable[5] /*index*/)];
+  variable[6] = variable[7];
+  goto return_label163;
+  return_label163: while(false);
+  /* Register variable[3]: Result */
+  variable[3] = variable[6];
+  variable[2] = variable[3];
+  goto return_label162;
+  return_label162: while(false);
+  tracehead = trace.prev;
+  return variable[2];
 }
 val_t compiling_global___TableEltComposite___compile_to_c(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltComposite::compile_to_c (src/compiling//compiling_global.nit:722,2--39)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
+  struct trace_t trace = {NULL, NULL, 752, LOCATE_compiling_global___TableEltComposite___compile_to_c};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  fprintf(stderr, "Aborted: src/compiling//compiling_global.nit:722,35--39\n"); nit_exit(1);
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  fprintf(stderr, "Aborted"); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_compiling_global___TableEltComposite___compile_to_c, LOCATE_compiling_global, 752); nit_exit(1);
+  return_label164: while(false);
   tracehead = trace.prev;
-  return variable2;
+  return variable[3];
+}
+void compiling_global___TableEltComposite___add(val_t  self, val_t  param0, val_t  param1) {
+  struct trace_t trace = {NULL, NULL, 744, LOCATE_compiling_global___TableEltComposite___add};
+  val_t variable[6];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_compiling_global___TableEltComposite____offsets(variable[0]) /*TableEltComposite::_offsets*/;
+  /* Register variable[5]: Result */
+  variable[5] = ATTR_compiling_global___TableEltComposite____table(variable[0]) /*TableEltComposite::_table*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_abstract_collection___Collection___length(variable[5])(variable[5]) /*AbstractArrayRead::length*/;
+  CALL_abstract_collection___Map_____braeq(variable[4])(variable[4],  variable[1] /*c*/, variable[5]) /*HashMap::[]=*/;
+  /* Register variable[4]: Result */
+  variable[4] = ATTR_compiling_global___TableEltComposite____table(variable[0]) /*TableEltComposite::_table*/;
+  CALL_abstract_collection___IndexedCollection___append(variable[4])(variable[4],  variable[2] /*tab*/) /*IndexedCollection::append*/;
+  return_label165: while(false);
+  tracehead = trace.prev;
+  return;
 }
 void compiling_global___TableEltComposite___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltComposite::init (src/compiling//compiling_global.nit:724,2--728:42)"};
-  val_t variable0;
-  val_t variable1;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltComposite].i]) return;
-  ATTR_compiling_global___TableEltComposite____cc( self) /*TableEltComposite::_cc*/ =  variable0 /*cc*/;
-  variable1 = NEW_array___Array___init(); /*new Array[LocalTableElt]*/
-  ATTR_compiling_global___TableEltComposite____table( self) /*TableEltComposite::_table*/ = variable1;
-  variable1 = NEW_hash___HashMap___init(); /*new HashMap[MMLocalClass, Int]*/
-  ATTR_compiling_global___TableEltComposite____offsets( self) /*TableEltComposite::_offsets*/ = variable1;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltComposite].i] = 1;
+  struct trace_t trace = {NULL, NULL, 754, LOCATE_compiling_global___TableEltComposite___init};
+  val_t variable[4];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_TableEltComposite].i]) return;
+  /* Register variable[2]: Method return value and escape marker */
+  ATTR_compiling_global___TableEltComposite____cc(variable[0]) /*TableEltComposite::_cc*/ =  variable[1] /*cc*/;
+  /* Register variable[3]: Result */
+  variable[3] = NEW_Array_array___Array___init() /*new Array[TableElt]*/;
+  ATTR_compiling_global___TableEltComposite____table(variable[0]) /*TableEltComposite::_table*/ = variable[3];
+  /* Register variable[3]: Result */
+  variable[3] = NEW_HashMap_hash___HashMap___init() /*new HashMap[MMLocalClass, Int]*/;
+  ATTR_compiling_global___TableEltComposite____offsets(variable[0]) /*TableEltComposite::_offsets*/ = variable[3];
+  return_label166: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_TableEltComposite].i] = 1;
   tracehead = trace.prev;
   return;
 }
 val_t compiling_global___TableEltClassSelfId___is_related_to(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltClassSelfId::is_related_to (src/compiling//compiling_global.nit:734,2--43)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 765, LOCATE_compiling_global___TableEltClassSelfId___is_related_to};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  TAG_Bool(true);
-  goto return_label91;
-  return_label91: while(false);
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  variable[2] =  TAG_Bool(true);
+  goto return_label167;
+  return_label167: while(false);
   tracehead = trace.prev;
-  return variable1;
+  return variable[2];
 }
 val_t compiling_global___TableEltClassSelfId___compile_to_c(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltClassSelfId::compile_to_c (src/compiling//compiling_global.nit:735,2--738:93)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-  val_t variable10;
-  val_t variable11;
-  val_t variable12;
-  val_t variable13;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable3 = ((compiling_global___CompilerVisitor___global_analysis_t)CALL( variable0 /*v*/,COLOR_compiling_global___CompilerVisitor___global_analysis))( variable0 /*v*/) /*CompilerVisitor::global_analysis*/;
-  variable2 = variable3;
-  variable3 = NEW_string___String___init(); /*new String*/
-  variable4 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-  variable5 = variable4;
-  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable5) /*String::append*/;
-  variable6 = ((compiling_global___CompilerVisitor___global_analysis_t)CALL( variable0 /*v*/,COLOR_compiling_global___CompilerVisitor___global_analysis))( variable0 /*v*/) /*CompilerVisitor::global_analysis*/;
-  variable6 = ((compiling_global___GlobalAnalysis___compiled_classes_t)CALL(variable6,COLOR_compiling_global___GlobalAnalysis___compiled_classes))(variable6) /*GlobalAnalysis::compiled_classes*/;
-  variable7 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable1 /*c*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable1 /*c*/) /*MMLocalClass::global*/;
-  variable6 = ((abstract_collection___CoupleMap_____bra_t)CALL(variable6,COLOR_abstract_collection___Map_____bra))(variable6, variable7) /*HashMap::[]*/;
-  variable6 = ((compiling_global___CompiledClass___id_t)CALL(variable6,COLOR_compiling_global___CompiledClass___id))(variable6) /*CompiledClass::id*/;
-  variable7 = variable6;
-  variable7 = ((string___String___to_s_t)CALL(variable7,COLOR_string___Object___to_s))(variable7) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable7) /*String::append*/;
-  variable8 = NEW_string___String___with_native(BOX_NativeString(" /* "), TAG_Int(4)); /*new String*/
-  variable9 = variable8;
-  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable9) /*String::append*/;
-  variable10 = ((compiling_global___ColorContext___color_t)CALL( variable2 /*ga*/,COLOR_compiling_global___ColorContext___color))( variable2 /*ga*/,  self) /*GlobalAnalysis::color*/;
-  variable11 = variable10;
-  variable11 = ((string___String___to_s_t)CALL(variable11,COLOR_string___Object___to_s))(variable11) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable11) /*String::append*/;
-  variable12 = NEW_string___String___with_native(BOX_NativeString(": Identity */"), TAG_Int(13)); /*new String*/
-  variable13 = variable12;
-  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable13) /*String::append*/;
-  variable2 = variable3;
-  goto return_label92;
-  return_label92: while(false);
-  tracehead = trace.prev;
-  return variable2;
-}
-void compiling_global___TableEltClassSelfId___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltClassSelfId::init (src/compiling//compiling_global.nit:741,2--5)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltClassSelfId].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltClassSelfId].i] = 1;
+  struct trace_t trace = {NULL, NULL, 766, LOCATE_compiling_global___TableEltClassSelfId___compile_to_c};
+  static val_t once_value_169 = NIT_NULL; /* Once value for string variable[6]*/
+  static val_t once_value_170 = NIT_NULL; /* Once value for string variable[6]*/
+  static val_t once_value_171 = NIT_NULL; /* Once value for string variable[6]*/
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Local variable */
+  /* Register variable[5]: Result */
+  variable[5] = CALL_compiling_global___GlobalCompilerVisitor___global_analysis( variable[1] /*v*/)( variable[1] /*v*/) /*GlobalCompilerVisitor::global_analysis*/;
+  variable[4] = variable[5];
+  variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_169 != NIT_NULL) variable[6] = once_value_169;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+    once_value_169 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_compiling_global___GlobalCompilerVisitor___global_analysis( variable[1] /*v*/)( variable[1] /*v*/) /*GlobalCompilerVisitor::global_analysis*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_compiling_global___GlobalAnalysis___compiled_classes(variable[6])(variable[6]) /*GlobalAnalysis::compiled_classes*/;
+  /* Register variable[7]: Result */
+  variable[7] = CALL_abstractmetamodel___MMLocalClass___global( variable[2] /*c*/)( variable[2] /*c*/) /*MMLocalClass::global*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_abstract_collection___MapRead_____bra(variable[6])(variable[6], variable[7]) /*CoupleMap::[]*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_compiling_global___CompiledClass___id(variable[6])(variable[6]) /*CompiledClass::id*/;
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_170 != NIT_NULL) variable[6] = once_value_170;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString(" /* "), TAG_Int(4)) /*new String*/;
+    once_value_170 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_compiling_global___ColorContext___color( variable[4] /*ga*/)( variable[4] /*ga*/, variable[0]) /*ColorContext::color*/;
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_171 != NIT_NULL) variable[6] = once_value_171;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString(": Identity */"), TAG_Int(13)) /*new String*/;
+    once_value_171 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
+  variable[3] = variable[5];
+  goto return_label168;
+  return_label168: while(false);
   tracehead = trace.prev;
-  return;
+  return variable[3];
 }
 val_t compiling_global___TableEltVftPointer___is_related_to(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltVftPointer::is_related_to (src/compiling//compiling_global.nit:746,2--43)"};
-  val_t variable0;
-  val_t variable1;
+  struct trace_t trace = {NULL, NULL, 776, LOCATE_compiling_global___TableEltVftPointer___is_related_to};
+  val_t variable[3];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  TAG_Bool(true);
-  goto return_label94;
-  return_label94: while(false);
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  variable[2] =  TAG_Bool(true);
+  goto return_label172;
+  return_label172: while(false);
   tracehead = trace.prev;
-  return variable1;
+  return variable[2];
 }
 val_t compiling_global___TableEltVftPointer___compile_to_c(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltVftPointer::compile_to_c (src/compiling//compiling_global.nit:747,2--750:60)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable3 = ((compiling_global___CompilerVisitor___global_analysis_t)CALL( variable0 /*v*/,COLOR_compiling_global___CompilerVisitor___global_analysis))( variable0 /*v*/) /*CompilerVisitor::global_analysis*/;
-  variable2 = variable3;
-  variable3 = NEW_string___String___init(); /*new String*/
-  variable4 = NEW_string___String___with_native(BOX_NativeString("/* "), TAG_Int(3)); /*new String*/
-  variable5 = variable4;
-  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable5) /*String::append*/;
-  variable6 = ((compiling_global___ColorContext___color_t)CALL( variable2 /*ga*/,COLOR_compiling_global___ColorContext___color))( variable2 /*ga*/,  self) /*GlobalAnalysis::color*/;
-  variable7 = variable6;
-  variable7 = ((string___String___to_s_t)CALL(variable7,COLOR_string___Object___to_s))(variable7) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable7) /*String::append*/;
-  variable8 = NEW_string___String___with_native(BOX_NativeString(": Pointer to the classtable */"), TAG_Int(30)); /*new String*/
-  variable9 = variable8;
-  ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable9) /*String::append*/;
-  variable2 = variable3;
-  goto return_label95;
-  return_label95: while(false);
-  tracehead = trace.prev;
-  return variable2;
-}
-void compiling_global___TableEltVftPointer___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "compiling_global::TableEltVftPointer::init (src/compiling//compiling_global.nit:753,2--5)"};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltVftPointer].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_TableEltVftPointer].i] = 1;
+  struct trace_t trace = {NULL, NULL, 777, LOCATE_compiling_global___TableEltVftPointer___compile_to_c};
+  static val_t once_value_174 = NIT_NULL; /* Once value for string variable[6]*/
+  static val_t once_value_175 = NIT_NULL; /* Once value for string variable[6]*/
+  val_t variable[7];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Local variable */
+  /* Register variable[5]: Result */
+  variable[5] = CALL_compiling_global___GlobalCompilerVisitor___global_analysis( variable[1] /*v*/)( variable[1] /*v*/) /*GlobalCompilerVisitor::global_analysis*/;
+  variable[4] = variable[5];
+  variable[5] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_174 != NIT_NULL) variable[6] = once_value_174;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString("/* "), TAG_Int(3)) /*new String*/;
+    once_value_174 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_compiling_global___ColorContext___color( variable[4] /*ga*/)( variable[4] /*ga*/, variable[0]) /*ColorContext::color*/;
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_175 != NIT_NULL) variable[6] = once_value_175;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString(": Pointer to the classtable */"), TAG_Int(30)) /*new String*/;
+    once_value_175 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  /* Ensure var variable[6]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[5])(variable[5], variable[6]) /*AbstractArray::add*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/;
+  variable[3] = variable[5];
+  goto return_label173;
+  return_label173: while(false);
   tracehead = trace.prev;
-  return;
+  return variable[3];
 }
 val_t compiling_global___ClassSorter___compare(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, "compiling_global::ClassSorter::compare (src/compiling//compiling_global.nit:760,2--47)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  param1;
-  variable2 = ((compiling_global___MMLocalClass___compare_t)CALL( variable0 /*a*/,COLOR_compiling_global___MMLocalClass___compare))( variable0 /*a*/,  variable1 /*b*/) /*MMLocalClass::compare*/;
-  goto return_label97;
-  return_label97: while(false);
+  struct trace_t trace = {NULL, NULL, 790, LOCATE_compiling_global___ClassSorter___compare};
+  val_t variable[5];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Local variable */
+  variable[2] =  param1;
+  /* Register variable[3]: Method return value and escape marker */
+  /* Register variable[4]: Result */
+  variable[4] = CALL_compiling_global___MMLocalClass___compare( variable[1] /*a*/)( variable[1] /*a*/,  variable[2] /*b*/) /*MMLocalClass::compare*/;
+  variable[3] = variable[4];
+  goto return_label176;
+  return_label176: while(false);
   tracehead = trace.prev;
-  return variable2;
+  return variable[3];
 }
 void compiling_global___ClassSorter___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, "compiling_global::ClassSorter::init (src/compiling//compiling_global.nit:761,2--5)"};
+  struct trace_t trace = {NULL, NULL, 791, LOCATE_compiling_global___ClassSorter___init};
+  val_t variable[2];
+  struct WBT_ **closurevariable = NULL;
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ClassSorter].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ClassSorter].i] = 1;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  if (init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassSorter].i]) return;
+  /* Register variable[1]: Method return value and escape marker */
+  return_label177: while(false);
+  init_table[VAL2OBJ(variable[0])->vft[INIT_TABLE_POS_ClassSorter].i] = 1;
   tracehead = trace.prev;
   return;
 }
 val_t compiling_global___MMLocalClass___compare(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::MMLocalClass::compare (src/compiling//compiling_global.nit:765,2--783:37)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-    val_t variable3;
-  val_t variable4;
-      val_t variable5;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 =  self;
-  variable2 = TAG_Bool(( variable1 /*a*/ ==  variable0 /*b*/) || (( variable1 /*a*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*a*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*a*/, variable0 /*b*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*a*/,COLOR_kernel___Object_____eqeq))( variable1 /*a*/,  variable0 /*b*/) /*MMLocalClass::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
-    variable1 =  TAG_Int(0);
-    goto return_label99;
+  struct trace_t trace = {NULL, NULL, 795, LOCATE_compiling_global___MMLocalClass___compare};
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Local variable */
+  variable[3] = variable[0];
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(( variable[3] /*a*/ ==  variable[1] /*b*/) || (( variable[3] /*a*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*a*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*a*/, variable[1] /*b*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*a*/)( variable[3] /*a*/,  variable[1] /*b*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
+    variable[2] =  TAG_Int(0);
+    goto return_label178;
   } else { /*if*/
-    variable2 = ((abstractmetamodel___MMLocalClass___module_t)CALL( variable1 /*a*/,COLOR_abstractmetamodel___MMLocalClass___module))( variable1 /*a*/) /*MMLocalClass::module*/;
-    variable2 = ((abstractmetamodel___MMModule___mhe_t)CALL(variable2,COLOR_abstractmetamodel___MMModule___mhe))(variable2) /*MMModule::mhe*/;
-    variable3 = ((abstractmetamodel___MMLocalClass___module_t)CALL( variable0 /*b*/,COLOR_abstractmetamodel___MMLocalClass___module))( variable0 /*b*/) /*MMLocalClass::module*/;
-    variable2 = ((partial_order___PartialOrderElement_____l_t)CALL(variable2,COLOR_partial_order___PartialOrderElement_____l))(variable2, variable3) /*PartialOrderElement::<*/;
-    if (UNTAG_Bool(variable2)) { /*if*/
-      variable1 =  TAG_Int(1);
-      goto return_label99;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstractmetamodel___MMLocalClass___module( variable[3] /*a*/)( variable[3] /*a*/) /*MMLocalClass::module*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_abstractmetamodel___MMModule___mhe(variable[4])(variable[4]) /*MMModule::mhe*/;
+    /* Register variable[5]: Result */
+    variable[5] = CALL_abstractmetamodel___MMLocalClass___module( variable[1] /*b*/)( variable[1] /*b*/) /*MMLocalClass::module*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_partial_order___PartialOrderElement_____l(variable[4])(variable[4], variable[5]) /*PartialOrderElement::<*/;
+    if (UNTAG_Bool(variable[4])) { /*if*/
+      variable[2] =  TAG_Int(1);
+      goto return_label178;
     } else { /*if*/
-      variable2 = ((abstractmetamodel___MMLocalClass___module_t)CALL( variable0 /*b*/,COLOR_abstractmetamodel___MMLocalClass___module))( variable0 /*b*/) /*MMLocalClass::module*/;
-      variable2 = ((abstractmetamodel___MMModule___mhe_t)CALL(variable2,COLOR_abstractmetamodel___MMModule___mhe))(variable2) /*MMModule::mhe*/;
-      variable3 = ((abstractmetamodel___MMLocalClass___module_t)CALL( variable1 /*a*/,COLOR_abstractmetamodel___MMLocalClass___module))( variable1 /*a*/) /*MMLocalClass::module*/;
-      variable2 = ((partial_order___PartialOrderElement_____l_t)CALL(variable2,COLOR_partial_order___PartialOrderElement_____l))(variable2, variable3) /*PartialOrderElement::<*/;
-      if (UNTAG_Bool(variable2)) { /*if*/
-        variable2 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-        variable1 = variable2;
-        goto return_label99;
+      /* Register variable[4]: Result */
+      variable[4] = CALL_abstractmetamodel___MMLocalClass___module( variable[1] /*b*/)( variable[1] /*b*/) /*MMLocalClass::module*/;
+      /* Register variable[4]: Result */
+      variable[4] = CALL_abstractmetamodel___MMModule___mhe(variable[4])(variable[4]) /*MMModule::mhe*/;
+      /* Register variable[5]: Result */
+      variable[5] = CALL_abstractmetamodel___MMLocalClass___module( variable[3] /*a*/)( variable[3] /*a*/) /*MMLocalClass::module*/;
+      /* Register variable[4]: Result */
+      variable[4] = CALL_partial_order___PartialOrderElement_____l(variable[4])(variable[4], variable[5]) /*PartialOrderElement::<*/;
+      if (UNTAG_Bool(variable[4])) { /*if*/
+        /* Register variable[4]: Result */
+        variable[4] = TAG_Int(-UNTAG_Int( TAG_Int(1)));
+        variable[2] = variable[4];
+        goto return_label178;
       }
     }
   }
-  variable3 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( variable1 /*a*/,COLOR_abstractmetamodel___MMLocalClass___cshe))( variable1 /*a*/) /*MMLocalClass::cshe*/;
-  variable3 = ((partial_order___PartialOrderElement___rank_t)CALL(variable3,COLOR_partial_order___PartialOrderElement___rank))(variable3) /*PartialOrderElement::rank*/;
-  variable2 = variable3;
-  variable4 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( variable0 /*b*/,COLOR_abstractmetamodel___MMLocalClass___cshe))( variable0 /*b*/) /*MMLocalClass::cshe*/;
-  variable4 = ((partial_order___PartialOrderElement___rank_t)CALL(variable4,COLOR_partial_order___PartialOrderElement___rank))(variable4) /*PartialOrderElement::rank*/;
-  variable3 = variable4;
-  variable4 = TAG_Bool(UNTAG_Int( variable2 /*ar*/)>UNTAG_Int( variable3 /*br*/));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    variable1 =  TAG_Int(1);
-    goto return_label99;
+  /* Register variable[4]: Local variable */
+  /* Register variable[5]: Result */
+  variable[5] = CALL_abstractmetamodel___MMLocalClass___cshe( variable[3] /*a*/)( variable[3] /*a*/) /*MMLocalClass::cshe*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_partial_order___PartialOrderElement___rank(variable[5])(variable[5]) /*PartialOrderElement::rank*/;
+  variable[4] = variable[5];
+  /* Register variable[5]: Local variable */
+  /* Register variable[6]: Result */
+  variable[6] = CALL_abstractmetamodel___MMLocalClass___cshe( variable[1] /*b*/)( variable[1] /*b*/) /*MMLocalClass::cshe*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_partial_order___PartialOrderElement___rank(variable[6])(variable[6]) /*PartialOrderElement::rank*/;
+  variable[5] = variable[6];
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(UNTAG_Int( variable[4] /*ar*/)>UNTAG_Int( variable[5] /*br*/));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    variable[2] =  TAG_Int(1);
+    goto return_label178;
   } else { /*if*/
-    variable4 = TAG_Bool(UNTAG_Int( variable3 /*br*/)>UNTAG_Int( variable2 /*ar*/));
-    if (UNTAG_Bool(variable4)) { /*if*/
-      variable4 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
-      variable1 = variable4;
-      goto return_label99;
+    /* Register variable[6]: Result */
+    variable[6] = TAG_Bool(UNTAG_Int( variable[5] /*br*/)>UNTAG_Int( variable[4] /*ar*/));
+    if (UNTAG_Bool(variable[6])) { /*if*/
+      /* Register variable[6]: Result */
+      variable[6] = TAG_Int(-UNTAG_Int( TAG_Int(1)));
+      variable[2] = variable[6];
+      goto return_label178;
     } else { /*if*/
-      variable4 = ((abstractmetamodel___MMLocalClass___name_t)CALL( variable0 /*b*/,COLOR_abstractmetamodel___MMLocalClass___name))( variable0 /*b*/) /*MMLocalClass::name*/;
-      variable4 = ((symbol___Symbol___to_s_t)CALL(variable4,COLOR_string___Object___to_s))(variable4) /*Symbol::to_s*/;
-      variable5 = ((abstractmetamodel___MMLocalClass___name_t)CALL( variable1 /*a*/,COLOR_abstractmetamodel___MMLocalClass___name))( variable1 /*a*/) /*MMLocalClass::name*/;
-      variable5 = ((symbol___Symbol___to_s_t)CALL(variable5,COLOR_string___Object___to_s))(variable5) /*Symbol::to_s*/;
-      variable4 = ((kernel___Comparable_____leqg_t)CALL(variable4,COLOR_kernel___Comparable_____leqg))(variable4, variable5) /*String::<=>*/;
-      variable1 = variable4;
-      goto return_label99;
+      /* Register variable[6]: Result */
+      variable[6] = CALL_abstractmetamodel___MMLocalClass___name( variable[1] /*b*/)( variable[1] /*b*/) /*MMLocalClass::name*/;
+      /* Register variable[6]: Result */
+      variable[6] = CALL_string___Object___to_s(variable[6])(variable[6]) /*Symbol::to_s*/;
+      /* Register variable[7]: Result */
+      variable[7] = CALL_abstractmetamodel___MMLocalClass___name( variable[3] /*a*/)( variable[3] /*a*/) /*MMLocalClass::name*/;
+      /* Register variable[7]: Result */
+      variable[7] = CALL_string___Object___to_s(variable[7])(variable[7]) /*Symbol::to_s*/;
+      /* Register variable[6]: Result */
+      variable[6] = CALL_kernel___Comparable_____leqg(variable[6])(variable[6], variable[7]) /*Comparable::<=>*/;
+      variable[2] = variable[6];
+      goto return_label178;
     }
   }
-  return_label99: while(false);
+  return_label178: while(false);
   tracehead = trace.prev;
-  return variable1;
+  return variable[2];
 }
 void compiling_global___MMLocalClass___declare_tables_to_c(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::MMLocalClass::declare_tables_to_c (src/compiling//compiling_global.nit:787,2--800:71)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-      val_t variable9;
-      val_t variable10;
-      val_t variable11;
-      val_t variable12;
-      val_t variable13;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable1 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-  ((compiling_base___CompilerVisitor___add_decl_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_decl))( variable0 /*v*/, variable1) /*CompilerVisitor::add_decl*/;
-  variable2 = ((compiling_base___MMLocalClass___primitive_info_t)CALL( self,COLOR_compiling_base___MMLocalClass___primitive_info))( self) /*MMLocalClass::primitive_info*/;
-  variable1 = variable2;
-  variable2 = NEW_string___String___init(); /*new String*/
-  variable3 = NEW_string___String___with_native(BOX_NativeString("extern const classtable_elt_t VFT_"), TAG_Int(34)); /*new String*/
-  variable4 = variable3;
-  ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable4) /*String::append*/;
-  variable5 = ((abstractmetamodel___MMLocalClass___name_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___name))( self) /*MMLocalClass::name*/;
-  variable6 = variable5;
-  variable6 = ((string___String___to_s_t)CALL(variable6,COLOR_string___Object___to_s))(variable6) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable6) /*String::append*/;
-  variable7 = NEW_string___String___with_native(BOX_NativeString("[];"), TAG_Int(3)); /*new String*/
-  variable8 = variable7;
-  ((string___String___append_t)CALL(variable2,COLOR_abstract_collection___IndexedCollection___append))(variable2, variable8) /*String::append*/;
-  ((compiling_base___CompilerVisitor___add_decl_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_decl))( variable0 /*v*/, variable2) /*CompilerVisitor::add_decl*/;
-  variable2 = TAG_Bool(( variable1 /*pi*/ ==  NIT_NULL /*null*/) || (( variable1 /*pi*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*pi*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*pi*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*pi*/,COLOR_kernel___Object_____eqeq))( variable1 /*pi*/,  NIT_NULL /*null*/) /*PrimitiveInfo::==*/)))));
-  if (UNTAG_Bool(variable2)) { /*if*/
+  struct trace_t trace = {NULL, NULL, 817, LOCATE_compiling_global___MMLocalClass___declare_tables_to_c};
+  static val_t once_value_180 = NIT_NULL; /* Once value for string variable[3]*/
+  static val_t once_value_181 = NIT_NULL; /* Once value for string variable[5]*/
+  static val_t once_value_182 = NIT_NULL; /* Once value for string variable[5]*/
+      static val_t once_value_183 = NIT_NULL; /* Once value for string variable[7]*/
+      static val_t once_value_184 = NIT_NULL; /* Once value for string variable[7]*/
+      static val_t once_value_185 = NIT_NULL; /* Once value for string variable[7]*/
+      static val_t once_value_186 = NIT_NULL; /* Once value for string variable[7]*/
+      static val_t once_value_187 = NIT_NULL; /* Once value for string variable[7]*/
+      static val_t once_value_188 = NIT_NULL; /* Once value for string variable[7]*/
+      static val_t once_value_189 = NIT_NULL; /* Once value for string variable[7]*/
+      static val_t once_value_190 = NIT_NULL; /* Once value for string variable[7]*/
+      static val_t once_value_191 = NIT_NULL; /* Once value for string variable[7]*/
+      static val_t once_value_192 = NIT_NULL; /* Once value for string variable[7]*/
+      static val_t once_value_193 = NIT_NULL; /* Once value for string variable[7]*/
+  val_t variable[8];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Once String constant */
+  if (once_value_180 != NIT_NULL) variable[3] = once_value_180;
+  else {
+    variable[3] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+    once_value_180 = variable[3];
+  }
+  /* Register variable[3]: Result */
+  CALL_compiling_base___CompilerVisitor___add_decl( variable[1] /*v*/)( variable[1] /*v*/, variable[3]) /*CompilerVisitor::add_decl*/;
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = CALL_compiling_base___MMLocalClass___primitive_info(variable[0])(variable[0]) /*MMLocalClass::primitive_info*/;
+  variable[3] = variable[4];
+  variable[4] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[5]: Once String constant */
+  if (once_value_181 != NIT_NULL) variable[5] = once_value_181;
+  else {
+    variable[5] = NEW_String_string___String___with_native(BOX_NativeString("extern const classtable_elt_t VFT_"), TAG_Int(34)) /*new String*/;
+    once_value_181 = variable[5];
+  }
+  /* Register variable[5]: Result */
+  /* Ensure var variable[5]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_abstractmetamodel___MMLocalClass___name(variable[0])(variable[0]) /*MMLocalClass::name*/;
+  /* Ensure var variable[5]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], CALL_string___Object___to_s(variable[5])(variable[5]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[5]: Once String constant */
+  if (once_value_182 != NIT_NULL) variable[5] = once_value_182;
+  else {
+    variable[5] = NEW_String_string___String___with_native(BOX_NativeString("[];"), TAG_Int(3)) /*new String*/;
+    once_value_182 = variable[5];
+  }
+  /* Register variable[5]: Result */
+  /* Ensure var variable[5]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[4])(variable[4], variable[5]) /*AbstractArray::add*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_string___Object___to_s(variable[4])(variable[4]) /*Object::to_s*/;
+  CALL_compiling_base___CompilerVisitor___add_decl( variable[1] /*v*/)( variable[1] /*v*/, variable[4]) /*CompilerVisitor::add_decl*/;
+  /* Register variable[4]: Result */
+  variable[4] = TAG_Bool(( variable[3] /*pi*/ ==  NIT_NULL /*null*/) || (( variable[3] /*pi*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[3] /*pi*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[3] /*pi*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[3] /*pi*/)( variable[3] /*pi*/,  NIT_NULL /*null*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[4])) { /*if*/
   } else { /*if*/
-    variable2 = ((compiling_base___PrimitiveInfo___tagged_t)CALL( variable1 /*pi*/,COLOR_compiling_base___PrimitiveInfo___tagged))( variable1 /*pi*/) /*PrimitiveInfo::tagged*/;
-    if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable2)))) { /*if*/
-      variable3 = ((compiling_base___PrimitiveInfo___cname_t)CALL( variable1 /*pi*/,COLOR_compiling_base___PrimitiveInfo___cname))( variable1 /*pi*/) /*PrimitiveInfo::cname*/;
-      variable2 = variable3;
-      variable4 = NEW_string___String___init(); /*new String*/
-      variable5 = NEW_string___String___with_native(BOX_NativeString("struct TBOX_"), TAG_Int(12)); /*new String*/
-      variable6 = variable5;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable6) /*String::append*/;
-      variable7 = ((abstractmetamodel___MMLocalClass___name_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___name))( self) /*MMLocalClass::name*/;
-      variable8 = variable7;
-      variable8 = ((string___String___to_s_t)CALL(variable8,COLOR_string___Object___to_s))(variable8) /*String::to_s*/;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable8) /*String::append*/;
-      variable9 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-      variable10 = variable9;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable10) /*String::append*/;
-      variable3 = variable4;
-      variable4 = NEW_string___String___init(); /*new String*/
-      variable5 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-      variable6 = variable5;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable6) /*String::append*/;
-      variable7 =  variable3 /*tbox*/;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable7) /*String::append*/;
-      variable8 = NEW_string___String___with_native(BOX_NativeString(" { const classtable_elt_t * vft; "), TAG_Int(33)); /*new String*/
-      variable9 = variable8;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable9) /*String::append*/;
-      variable10 =  variable2 /*t*/;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable10) /*String::append*/;
-      variable11 = NEW_string___String___with_native(BOX_NativeString(" val;};"), TAG_Int(7)); /*new String*/
-      variable12 = variable11;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable12) /*String::append*/;
-      ((compiling_base___CompilerVisitor___add_decl_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_decl))( variable0 /*v*/, variable4) /*CompilerVisitor::add_decl*/;
-      variable4 = NEW_string___String___init(); /*new String*/
-      variable5 = NEW_string___String___with_native(BOX_NativeString("val_t BOX_"), TAG_Int(10)); /*new String*/
-      variable6 = variable5;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable6) /*String::append*/;
-      variable7 = ((abstractmetamodel___MMLocalClass___name_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___name))( self) /*MMLocalClass::name*/;
-      variable8 = variable7;
-      variable8 = ((string___String___to_s_t)CALL(variable8,COLOR_string___Object___to_s))(variable8) /*String::to_s*/;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable8) /*String::append*/;
-      variable9 = NEW_string___String___with_native(BOX_NativeString("("), TAG_Int(1)); /*new String*/
-      variable10 = variable9;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable10) /*String::append*/;
-      variable11 =  variable2 /*t*/;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable11) /*String::append*/;
-      variable12 = NEW_string___String___with_native(BOX_NativeString(" val);"), TAG_Int(6)); /*new String*/
-      variable13 = variable12;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable13) /*String::append*/;
-      ((compiling_base___CompilerVisitor___add_decl_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_decl))( variable0 /*v*/, variable4) /*CompilerVisitor::add_decl*/;
-      variable4 = NEW_string___String___init(); /*new String*/
-      variable5 = NEW_string___String___with_native(BOX_NativeString("#define UNBOX_"), TAG_Int(14)); /*new String*/
-      variable6 = variable5;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable6) /*String::append*/;
-      variable7 = ((abstractmetamodel___MMLocalClass___name_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___name))( self) /*MMLocalClass::name*/;
-      variable8 = variable7;
-      variable8 = ((string___String___to_s_t)CALL(variable8,COLOR_string___Object___to_s))(variable8) /*String::to_s*/;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable8) /*String::append*/;
-      variable9 = NEW_string___String___with_native(BOX_NativeString("(x) ((("), TAG_Int(7)); /*new String*/
-      variable10 = variable9;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable10) /*String::append*/;
-      variable11 =  variable3 /*tbox*/;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable11) /*String::append*/;
-      variable12 = NEW_string___String___with_native(BOX_NativeString(" *)(VAL2OBJ(x)))->val)"), TAG_Int(22)); /*new String*/
-      variable13 = variable12;
-      ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable13) /*String::append*/;
-      ((compiling_base___CompilerVisitor___add_decl_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_decl))( variable0 /*v*/, variable4) /*CompilerVisitor::add_decl*/;
+    /* Register variable[4]: Result */
+    variable[4] = CALL_compiling_base___PrimitiveInfo___tagged( variable[3] /*pi*/)( variable[3] /*pi*/) /*PrimitiveInfo::tagged*/;
+    if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[4])))) { /*if*/
+      /* Register variable[4]: Local variable */
+      /* Register variable[5]: Result */
+      variable[5] = CALL_compiling_base___PrimitiveInfo___cname( variable[3] /*pi*/)( variable[3] /*pi*/) /*PrimitiveInfo::cname*/;
+      variable[4] = variable[5];
+      /* Register variable[5]: Local variable */
+      variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+      /* Register variable[7]: Once String constant */
+      if (once_value_183 != NIT_NULL) variable[7] = once_value_183;
+      else {
+        variable[7] = NEW_String_string___String___with_native(BOX_NativeString("struct TBOX_"), TAG_Int(12)) /*new String*/;
+        once_value_183 = variable[7];
+      }
+      /* Register variable[7]: Result */
+      /* Ensure var variable[7]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      /* Register variable[7]: Result */
+      variable[7] = CALL_abstractmetamodel___MMLocalClass___name(variable[0])(variable[0]) /*MMLocalClass::name*/;
+      /* Ensure var variable[7]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
+      /* Register variable[7]: Once String constant */
+      if (once_value_184 != NIT_NULL) variable[7] = once_value_184;
+      else {
+        variable[7] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+        once_value_184 = variable[7];
+      }
+      /* Register variable[7]: Result */
+      /* Ensure var variable[7]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      /* Register variable[6]: Result */
+      variable[6] = CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/;
+      variable[5] = variable[6];
+      variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+      /* Register variable[7]: Once String constant */
+      if (once_value_185 != NIT_NULL) variable[7] = once_value_185;
+      else {
+        variable[7] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+        once_value_185 = variable[7];
+      }
+      /* Register variable[7]: Result */
+      /* Ensure var variable[7]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      variable[7] =  variable[5] /*tbox*/ /* Ensure var: super-string element*/;
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      /* Register variable[7]: Once String constant */
+      if (once_value_186 != NIT_NULL) variable[7] = once_value_186;
+      else {
+        variable[7] = NEW_String_string___String___with_native(BOX_NativeString(" { const classtable_elt_t * vft; "), TAG_Int(33)) /*new String*/;
+        once_value_186 = variable[7];
+      }
+      /* Register variable[7]: Result */
+      /* Ensure var variable[7]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      variable[7] =  variable[4] /*t*/ /* Ensure var: super-string element*/;
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      /* Register variable[7]: Once String constant */
+      if (once_value_187 != NIT_NULL) variable[7] = once_value_187;
+      else {
+        variable[7] = NEW_String_string___String___with_native(BOX_NativeString(" val;};"), TAG_Int(7)) /*new String*/;
+        once_value_187 = variable[7];
+      }
+      /* Register variable[7]: Result */
+      /* Ensure var variable[7]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      /* Register variable[6]: Result */
+      variable[6] = CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/;
+      CALL_compiling_base___CompilerVisitor___add_decl( variable[1] /*v*/)( variable[1] /*v*/, variable[6]) /*CompilerVisitor::add_decl*/;
+      variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+      /* Register variable[7]: Once String constant */
+      if (once_value_188 != NIT_NULL) variable[7] = once_value_188;
+      else {
+        variable[7] = NEW_String_string___String___with_native(BOX_NativeString("val_t BOX_"), TAG_Int(10)) /*new String*/;
+        once_value_188 = variable[7];
+      }
+      /* Register variable[7]: Result */
+      /* Ensure var variable[7]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      /* Register variable[7]: Result */
+      variable[7] = CALL_abstractmetamodel___MMLocalClass___name(variable[0])(variable[0]) /*MMLocalClass::name*/;
+      /* Ensure var variable[7]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
+      /* Register variable[7]: Once String constant */
+      if (once_value_189 != NIT_NULL) variable[7] = once_value_189;
+      else {
+        variable[7] = NEW_String_string___String___with_native(BOX_NativeString("("), TAG_Int(1)) /*new String*/;
+        once_value_189 = variable[7];
+      }
+      /* Register variable[7]: Result */
+      /* Ensure var variable[7]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      variable[7] =  variable[4] /*t*/ /* Ensure var: super-string element*/;
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      /* Register variable[7]: Once String constant */
+      if (once_value_190 != NIT_NULL) variable[7] = once_value_190;
+      else {
+        variable[7] = NEW_String_string___String___with_native(BOX_NativeString(" val);"), TAG_Int(6)) /*new String*/;
+        once_value_190 = variable[7];
+      }
+      /* Register variable[7]: Result */
+      /* Ensure var variable[7]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      /* Register variable[6]: Result */
+      variable[6] = CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/;
+      CALL_compiling_base___CompilerVisitor___add_decl( variable[1] /*v*/)( variable[1] /*v*/, variable[6]) /*CompilerVisitor::add_decl*/;
+      variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+      /* Register variable[7]: Once String constant */
+      if (once_value_191 != NIT_NULL) variable[7] = once_value_191;
+      else {
+        variable[7] = NEW_String_string___String___with_native(BOX_NativeString("#define UNBOX_"), TAG_Int(14)) /*new String*/;
+        once_value_191 = variable[7];
+      }
+      /* Register variable[7]: Result */
+      /* Ensure var variable[7]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      /* Register variable[7]: Result */
+      variable[7] = CALL_abstractmetamodel___MMLocalClass___name(variable[0])(variable[0]) /*MMLocalClass::name*/;
+      /* Ensure var variable[7]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
+      /* Register variable[7]: Once String constant */
+      if (once_value_192 != NIT_NULL) variable[7] = once_value_192;
+      else {
+        variable[7] = NEW_String_string___String___with_native(BOX_NativeString("(x) ((("), TAG_Int(7)) /*new String*/;
+        once_value_192 = variable[7];
+      }
+      /* Register variable[7]: Result */
+      /* Ensure var variable[7]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      variable[7] =  variable[5] /*tbox*/ /* Ensure var: super-string element*/;
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      /* Register variable[7]: Once String constant */
+      if (once_value_193 != NIT_NULL) variable[7] = once_value_193;
+      else {
+        variable[7] = NEW_String_string___String___with_native(BOX_NativeString(" *)(VAL2OBJ(x)))->val)"), TAG_Int(22)) /*new String*/;
+        once_value_193 = variable[7];
+      }
+      /* Register variable[7]: Result */
+      /* Ensure var variable[7]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+      /* Register variable[6]: Result */
+      variable[6] = CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/;
+      CALL_compiling_base___CompilerVisitor___add_decl( variable[1] /*v*/)( variable[1] /*v*/, variable[6]) /*CompilerVisitor::add_decl*/;
     }
   }
+  return_label179: while(false);
   tracehead = trace.prev;
   return;
 }
 void compiling_global___MMLocalClass___compile_tables_to_c(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, "compiling_global::MMLocalClass::compile_tables_to_c (src/compiling//compiling_global.nit:804,2--913:18)"};
-  val_t variable0;
-  val_t variable1;
-  val_t variable2;
-  val_t variable3;
-  val_t variable4;
-  val_t variable5;
-  val_t variable6;
-  val_t variable7;
-  val_t variable8;
-  val_t variable9;
-  val_t variable10;
-  val_t variable11;
-  val_t variable12;
-  val_t variable13;
-    val_t variable14;
-        val_t variable15;
-          val_t variable16;
-          val_t variable17;
-          val_t variable18;
-          val_t variable19;
-          val_t variable20;
-          val_t variable21;
-          val_t variable22;
-          val_t variable23;
-          val_t variable24;
-          val_t variable25;
-            val_t variable26;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 =  param0;
-  variable2 = ((compiling_global___CompilerVisitor___global_analysis_t)CALL( variable0 /*v*/,COLOR_compiling_global___CompilerVisitor___global_analysis))( variable0 /*v*/) /*CompilerVisitor::global_analysis*/;
-  variable2 = ((compiling_global___GlobalAnalysis___compiled_classes_t)CALL(variable2,COLOR_compiling_global___GlobalAnalysis___compiled_classes))(variable2) /*GlobalAnalysis::compiled_classes*/;
-  variable3 = ((abstractmetamodel___MMLocalClass___global_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___global))( self) /*MMLocalClass::global*/;
-  variable2 = ((abstract_collection___CoupleMap_____bra_t)CALL(variable2,COLOR_abstract_collection___Map_____bra))(variable2, variable3) /*HashMap::[]*/;
-  variable1 = variable2;
-  variable3 = ((compiling_global___CompiledClass___class_table_t)CALL( variable1 /*cc*/,COLOR_compiling_global___CompiledClass___class_table))( variable1 /*cc*/) /*CompiledClass::class_table*/;
-  variable2 = variable3;
-  variable4 = ((array___AbstractArray___length_t)CALL( variable2 /*ctab*/,COLOR_abstract_collection___Collection___length))( variable2 /*ctab*/) /*Array::length*/;
-  variable3 = variable4;
-  variable4 = ((compiling_global___CompilerVisitor___global_analysis_t)CALL( variable0 /*v*/,COLOR_compiling_global___CompilerVisitor___global_analysis))( variable0 /*v*/) /*CompilerVisitor::global_analysis*/;
-  variable4 = ((compiling_global___GlobalAnalysis___max_class_table_length_t)CALL(variable4,COLOR_compiling_global___GlobalAnalysis___max_class_table_length))(variable4) /*GlobalAnalysis::max_class_table_length*/;
-  variable5 = ((array___AbstractArray___length_t)CALL( variable2 /*ctab*/,COLOR_abstract_collection___Collection___length))( variable2 /*ctab*/) /*Array::length*/;
-  variable4 = TAG_Bool(UNTAG_Int(variable4)>UNTAG_Int(variable5));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    variable4 = ((compiling_global___CompilerVisitor___global_analysis_t)CALL( variable0 /*v*/,COLOR_compiling_global___CompilerVisitor___global_analysis))( variable0 /*v*/) /*CompilerVisitor::global_analysis*/;
-    variable4 = ((compiling_global___GlobalAnalysis___max_class_table_length_t)CALL(variable4,COLOR_compiling_global___GlobalAnalysis___max_class_table_length))(variable4) /*GlobalAnalysis::max_class_table_length*/;
-    variable3 = variable4 /*clen=*/;
-  }
-  variable4 = NEW_string___String___init(); /*new String*/
-  variable5 = NEW_string___String___with_native(BOX_NativeString("const classtable_elt_t VFT_"), TAG_Int(27)); /*new String*/
-  variable6 = variable5;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable6) /*String::append*/;
-  variable7 = ((abstractmetamodel___MMLocalClass___name_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___name))( self) /*MMLocalClass::name*/;
-  variable8 = variable7;
-  variable8 = ((string___String___to_s_t)CALL(variable8,COLOR_string___Object___to_s))(variable8) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable8) /*String::append*/;
-  variable9 = NEW_string___String___with_native(BOX_NativeString("["), TAG_Int(1)); /*new String*/
-  variable10 = variable9;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable10) /*String::append*/;
-  variable11 =  variable3 /*clen*/;
-  variable11 = ((string___String___to_s_t)CALL(variable11,COLOR_string___Object___to_s))(variable11) /*String::to_s*/;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable11) /*String::append*/;
-  variable12 = NEW_string___String___with_native(BOX_NativeString("] = {"), TAG_Int(5)); /*new String*/
-  variable13 = variable12;
-  ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable13) /*String::append*/;
-  ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable4) /*CompilerVisitor::add_instr*/;
-  ((compiling_base___CompilerVisitor___indent_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___indent))( variable0 /*v*/) /*CompilerVisitor::indent*/;
-  variable4 = ((array___AbstractArray___iterator_t)CALL( variable2 /*ctab*/,COLOR_abstract_collection___Collection___iterator))( variable2 /*ctab*/) /*Array::iterator*/;
+  struct trace_t trace = {NULL, NULL, 834, LOCATE_compiling_global___MMLocalClass___compile_tables_to_c};
+  static val_t once_value_195 = NIT_NULL; /* Once value for string variable[7]*/
+  static val_t once_value_196 = NIT_NULL; /* Once value for string variable[7]*/
+  static val_t once_value_197 = NIT_NULL; /* Once value for string variable[7]*/
+      static val_t once_value_199 = NIT_NULL; /* Once value for string variable[9]*/
+      static val_t once_value_200 = NIT_NULL; /* Once value for string variable[10]*/
+      static val_t once_value_201 = NIT_NULL; /* Once value for string variable[10]*/
+    static val_t once_value_202 = NIT_NULL; /* Once value for string variable[6]*/
+  static val_t once_value_203 = NIT_NULL; /* Once value for string variable[6]*/
+      static val_t once_value_205 = NIT_NULL; /* Once value for string variable[10]*/
+    static val_t once_value_206 = NIT_NULL; /* Once value for string variable[10]*/
+    static val_t once_value_207 = NIT_NULL; /* Once value for string variable[10]*/
+    static val_t once_value_208 = NIT_NULL; /* Once value for string variable[9]*/
+    static val_t once_value_209 = NIT_NULL; /* Once value for string variable[12]*/
+    static val_t once_value_210 = NIT_NULL; /* Once value for string variable[13]*/
+    static val_t once_value_211 = NIT_NULL; /* Once value for string variable[13]*/
+    static val_t once_value_212 = NIT_NULL; /* Once value for string variable[13]*/
+    static val_t once_value_213 = NIT_NULL; /* Once value for string variable[13]*/
+    static val_t once_value_214 = NIT_NULL; /* Once value for string variable[12]*/
+          static val_t once_value_216 = NIT_NULL; /* Once value for string variable[21]*/
+          static val_t once_value_217 = NIT_NULL; /* Once value for string variable[21]*/
+          static val_t once_value_218 = NIT_NULL; /* Once value for string variable[21]*/
+    static val_t once_value_219 = NIT_NULL; /* Once value for string variable[12]*/
+    static val_t once_value_220 = NIT_NULL; /* Once value for string variable[12]*/
+    static val_t once_value_221 = NIT_NULL; /* Once value for string variable[14]*/
+    static val_t once_value_222 = NIT_NULL; /* Once value for string variable[14]*/
+    static val_t once_value_223 = NIT_NULL; /* Once value for string variable[13]*/
+        static val_t once_value_225 = NIT_NULL; /* Once value for string variable[20]*/
+        static val_t once_value_226 = NIT_NULL; /* Once value for string variable[20]*/
+        static val_t once_value_227 = NIT_NULL; /* Once value for string variable[20]*/
+    static val_t once_value_228 = NIT_NULL; /* Once value for string variable[14]*/
+    static val_t once_value_229 = NIT_NULL; /* Once value for string variable[17]*/
+    static val_t once_value_230 = NIT_NULL; /* Once value for string variable[17]*/
+    static val_t once_value_231 = NIT_NULL; /* Once value for string variable[17]*/
+    static val_t once_value_232 = NIT_NULL; /* Once value for string variable[17]*/
+      static val_t once_value_234 = NIT_NULL; /* Once value for string variable[23]*/
+        static val_t once_value_236 = NIT_NULL; /* Once value for string variable[26]*/
+        static val_t once_value_237 = NIT_NULL; /* Once value for string variable[26]*/
+        static val_t once_value_238 = NIT_NULL; /* Once value for string variable[26]*/
+        static val_t once_value_239 = NIT_NULL; /* Once value for string variable[26]*/
+      static val_t once_value_240 = NIT_NULL; /* Once value for string variable[22]*/
+      static val_t once_value_241 = NIT_NULL; /* Once value for string variable[24]*/
+      static val_t once_value_242 = NIT_NULL; /* Once value for string variable[24]*/
+      static val_t once_value_243 = NIT_NULL; /* Once value for string variable[24]*/
+      static val_t once_value_244 = NIT_NULL; /* Once value for string variable[24]*/
+      static val_t once_value_245 = NIT_NULL; /* Once value for string variable[24]*/
+      static val_t once_value_246 = NIT_NULL; /* Once value for string variable[24]*/
+      static val_t once_value_247 = NIT_NULL; /* Once value for string variable[24]*/
+      static val_t once_value_248 = NIT_NULL; /* Once value for string variable[24]*/
+      static val_t once_value_249 = NIT_NULL; /* Once value for string variable[24]*/
+      static val_t once_value_250 = NIT_NULL; /* Once value for string variable[24]*/
+      static val_t once_value_251 = NIT_NULL; /* Once value for string variable[24]*/
+      static val_t once_value_252 = NIT_NULL; /* Once value for string variable[24]*/
+      static val_t once_value_253 = NIT_NULL; /* Once value for string variable[24]*/
+      static val_t once_value_254 = NIT_NULL; /* Once value for string variable[24]*/
+      static val_t once_value_255 = NIT_NULL; /* Once value for string variable[24]*/
+      static val_t once_value_256 = NIT_NULL; /* Once value for string variable[23]*/
+      static val_t once_value_257 = NIT_NULL; /* Once value for string variable[23]*/
+      static val_t once_value_258 = NIT_NULL; /* Once value for string variable[11]*/
+      static val_t once_value_259 = NIT_NULL; /* Once value for string variable[11]*/
+      static val_t once_value_260 = NIT_NULL; /* Once value for string variable[11]*/
+      static val_t once_value_261 = NIT_NULL; /* Once value for string variable[11]*/
+      static val_t once_value_262 = NIT_NULL; /* Once value for string variable[11]*/
+      static val_t once_value_263 = NIT_NULL; /* Once value for string variable[11]*/
+      static val_t once_value_264 = NIT_NULL; /* Once value for string variable[11]*/
+      static val_t once_value_265 = NIT_NULL; /* Once value for string variable[11]*/
+      static val_t once_value_266 = NIT_NULL; /* Once value for string variable[11]*/
+      static val_t once_value_267 = NIT_NULL; /* Once value for string variable[11]*/
+      static val_t once_value_268 = NIT_NULL; /* Once value for string variable[11]*/
+      static val_t once_value_269 = NIT_NULL; /* Once value for string variable[10]*/
+      static val_t once_value_270 = NIT_NULL; /* Once value for string variable[10]*/
+      static val_t once_value_271 = NIT_NULL; /* Once value for string variable[10]*/
+  val_t variable[27];
+  struct WBT_ **closurevariable = NULL;
+  trace.prev = tracehead; tracehead = &trace;
+  trace.file = LOCATE_compiling_global;
+  /* Register variable[0]: Local variable */
+  variable[0] =  self;
+  /* Register variable[1]: Local variable */
+  variable[1] =  param0;
+  /* Register variable[2]: Method return value and escape marker */
+  /* Register variable[3]: Local variable */
+  /* Register variable[4]: Result */
+  variable[4] = CALL_compiling_global___GlobalCompilerVisitor___global_analysis( variable[1] /*v*/)( variable[1] /*v*/) /*GlobalCompilerVisitor::global_analysis*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_compiling_global___GlobalAnalysis___compiled_classes(variable[4])(variable[4]) /*GlobalAnalysis::compiled_classes*/;
+  /* Register variable[5]: Result */
+  variable[5] = CALL_abstractmetamodel___MMLocalClass___global(variable[0])(variable[0]) /*MMLocalClass::global*/;
+  /* Register variable[4]: Result */
+  variable[4] = CALL_abstract_collection___MapRead_____bra(variable[4])(variable[4], variable[5]) /*CoupleMap::[]*/;
+  variable[3] = variable[4];
+  /* Register variable[4]: Local variable */
+  /* Register variable[5]: Result */
+  variable[5] = CALL_compiling_global___CompiledClass___class_table( variable[3] /*cc*/)( variable[3] /*cc*/) /*CompiledClass::class_table*/;
+  variable[4] = variable[5];
+  /* Register variable[5]: Local variable */
+  /* Register variable[6]: Result */
+  variable[6] = CALL_abstract_collection___Collection___length( variable[4] /*ctab*/)( variable[4] /*ctab*/) /*AbstractArrayRead::length*/;
+  variable[5] = variable[6];
+  /* Register variable[6]: Result */
+  variable[6] = CALL_compiling_global___GlobalCompilerVisitor___global_analysis( variable[1] /*v*/)( variable[1] /*v*/) /*GlobalCompilerVisitor::global_analysis*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_compiling_global___GlobalAnalysis___max_class_table_length(variable[6])(variable[6]) /*GlobalAnalysis::max_class_table_length*/;
+  /* Register variable[7]: Result */
+  variable[7] = CALL_abstract_collection___Collection___length( variable[4] /*ctab*/)( variable[4] /*ctab*/) /*AbstractArrayRead::length*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(UNTAG_Int(variable[6])>UNTAG_Int(variable[7]));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    /* Register variable[6]: Result */
+    variable[6] = CALL_compiling_global___GlobalCompilerVisitor___global_analysis( variable[1] /*v*/)( variable[1] /*v*/) /*GlobalCompilerVisitor::global_analysis*/;
+    /* Register variable[6]: Result */
+    variable[6] = CALL_compiling_global___GlobalAnalysis___max_class_table_length(variable[6])(variable[6]) /*GlobalAnalysis::max_class_table_length*/;
+    variable[5] = variable[6] /*clen=*/;
+  }
+  variable[6] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+  /* Register variable[7]: Once String constant */
+  if (once_value_195 != NIT_NULL) variable[7] = once_value_195;
+  else {
+    variable[7] = NEW_String_string___String___with_native(BOX_NativeString("const classtable_elt_t VFT_"), TAG_Int(27)) /*new String*/;
+    once_value_195 = variable[7];
+  }
+  /* Register variable[7]: Result */
+  /* Ensure var variable[7]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+  /* Register variable[7]: Result */
+  variable[7] = CALL_abstractmetamodel___MMLocalClass___name(variable[0])(variable[0]) /*MMLocalClass::name*/;
+  /* Ensure var variable[7]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[7]: Once String constant */
+  if (once_value_196 != NIT_NULL) variable[7] = once_value_196;
+  else {
+    variable[7] = NEW_String_string___String___with_native(BOX_NativeString("["), TAG_Int(1)) /*new String*/;
+    once_value_196 = variable[7];
+  }
+  /* Register variable[7]: Result */
+  /* Ensure var variable[7]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+  variable[7] =  variable[5] /*clen*/ /* Ensure var: super-string element*/;
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], CALL_string___Object___to_s(variable[7])(variable[7]) /*Object::to_s*/) /*AbstractArray::add*/;
+  /* Register variable[7]: Once String constant */
+  if (once_value_197 != NIT_NULL) variable[7] = once_value_197;
+  else {
+    variable[7] = NEW_String_string___String___with_native(BOX_NativeString("] = {"), TAG_Int(5)) /*new String*/;
+    once_value_197 = variable[7];
+  }
+  /* Register variable[7]: Result */
+  /* Ensure var variable[7]: super-string element*/
+  CALL_abstract_collection___SimpleCollection___add(variable[6])(variable[6], variable[7]) /*AbstractArray::add*/;
+  /* Register variable[6]: Result */
+  variable[6] = CALL_string___Object___to_s(variable[6])(variable[6]) /*Object::to_s*/;
+  CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[6]) /*CompilerVisitor::add_instr*/;
+  CALL_compiling_base___CompilerVisitor___indent( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::indent*/;
+  /* Register variable[6]: For iterator */
+  variable[6] = CALL_abstract_collection___Collection___iterator( variable[4] /*ctab*/)( variable[4] /*ctab*/) /*AbstractArrayRead::iterator*/;
   while (true) { /*for*/
-    variable5 = ((array___ArrayIterator___is_ok_t)CALL(variable4,COLOR_abstract_collection___Iterator___is_ok))(variable4) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable5)) break; /*for*/
-    variable5 = ((array___ArrayIterator___item_t)CALL(variable4,COLOR_abstract_collection___Iterator___item))(variable4) /*ArrayIterator::item*/;
-    variable6 = TAG_Bool(( variable5 /*e*/ ==  NIT_NULL /*null*/) || (( variable5 /*e*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*e*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*e*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*e*/,COLOR_kernel___Object_____eqeq))( variable5 /*e*/,  NIT_NULL /*null*/) /*TableElt::==*/)))));
-    if (UNTAG_Bool(variable6)) { /*if*/
-      variable6 = NEW_string___String___with_native(BOX_NativeString("{0} /* Class Hole :( */,"), TAG_Int(24)); /*new String*/
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable6) /*CompilerVisitor::add_instr*/;
+    /* Register variable[7]: For 'is_ok' result */
+    variable[7] = CALL_abstract_collection___Iterator___is_ok(variable[6])(variable[6]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[7])) break; /*for*/
+    variable[7] = CALL_abstract_collection___Iterator___item(variable[6])(variable[6]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[8]: Local variable */
+    variable[8] = variable[7];
+    /* Register variable[9]: Result */
+    variable[9] = TAG_Bool(( variable[8] /*e*/ ==  NIT_NULL /*null*/) || (( variable[8] /*e*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[8] /*e*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[8] /*e*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[8] /*e*/)( variable[8] /*e*/,  NIT_NULL /*null*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[9])) { /*if*/
+      /* Register variable[9]: Once String constant */
+      if (once_value_199 != NIT_NULL) variable[9] = once_value_199;
+      else {
+        variable[9] = NEW_String_string___String___with_native(BOX_NativeString("{0} /* Class Hole :( */,"), TAG_Int(24)) /*new String*/;
+        once_value_199 = variable[9];
+      }
+      /* Register variable[9]: Result */
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[9]) /*CompilerVisitor::add_instr*/;
     } else { /*if*/
-      variable6 = NEW_string___String___init(); /*new String*/
-      variable7 = NEW_string___String___with_native(BOX_NativeString("{(int) "), TAG_Int(7)); /*new String*/
-      variable8 = variable7;
-      ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable8) /*String::append*/;
-      variable9 = ((compiling_global___TableElt___compile_to_c_t)CALL( variable5 /*e*/,COLOR_compiling_global___TableElt___compile_to_c))( variable5 /*e*/,  variable0 /*v*/,  self) /*TableElt::compile_to_c*/;
-      variable10 = variable9;
-      ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable10) /*String::append*/;
-      variable11 = NEW_string___String___with_native(BOX_NativeString("},"), TAG_Int(2)); /*new String*/
-      variable12 = variable11;
-      ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable12) /*String::append*/;
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable6) /*CompilerVisitor::add_instr*/;
+      variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+      /* Register variable[10]: Once String constant */
+      if (once_value_200 != NIT_NULL) variable[10] = once_value_200;
+      else {
+        variable[10] = NEW_String_string___String___with_native(BOX_NativeString("{(bigint) "), TAG_Int(10)) /*new String*/;
+        once_value_200 = variable[10];
+      }
+      /* Register variable[10]: Result */
+      /* Ensure var variable[10]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
+      /* Register variable[10]: Result */
+      variable[10] = CALL_compiling_global___TableElt___compile_to_c( variable[8] /*e*/)( variable[8] /*e*/,  variable[1] /*v*/, variable[0]) /*TableElt::compile_to_c*/;
+      /* Ensure var variable[10]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
+      /* Register variable[10]: Once String constant */
+      if (once_value_201 != NIT_NULL) variable[10] = once_value_201;
+      else {
+        variable[10] = NEW_String_string___String___with_native(BOX_NativeString("},"), TAG_Int(2)) /*new String*/;
+        once_value_201 = variable[10];
+      }
+      /* Register variable[10]: Result */
+      /* Ensure var variable[10]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
+      /* Register variable[9]: Result */
+      variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[9]) /*CompilerVisitor::add_instr*/;
     }
-    continue_102: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable4,COLOR_abstract_collection___Iterator___next))(variable4) /*ArrayIterator::next*/;
-  }
-  break_102: while(0);
-  variable4 = ((array___AbstractArray___length_t)CALL( variable2 /*ctab*/,COLOR_abstract_collection___Collection___length))( variable2 /*ctab*/) /*Array::length*/;
-  variable4 = TAG_Bool(UNTAG_Int( variable3 /*clen*/)>UNTAG_Int(variable4));
-  if (UNTAG_Bool(variable4)) { /*if*/
-    variable4 = NEW_string___String___with_native(BOX_NativeString("{0},"), TAG_Int(4)); /*new String*/
-    variable5 = ((array___AbstractArray___length_t)CALL( variable2 /*ctab*/,COLOR_abstract_collection___Collection___length))( variable2 /*ctab*/) /*Array::length*/;
-    variable5 = TAG_Int(UNTAG_Int( variable3 /*clen*/)-UNTAG_Int(variable5));
-    variable4 = ((string___String_____star_t)CALL(variable4,COLOR_string___String_____star))(variable4, variable5) /*String::**/;
-    ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable4) /*CompilerVisitor::add_instr*/;
-  }
-  ((compiling_base___CompilerVisitor___unindent_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___unindent))( variable0 /*v*/) /*CompilerVisitor::unindent*/;
-  variable4 = NEW_string___String___with_native(BOX_NativeString("};"), TAG_Int(2)); /*new String*/
-  ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable4) /*CompilerVisitor::add_instr*/;
-  variable5 = ((compiling_global___CompiledClass___instance_table_t)CALL( variable1 /*cc*/,COLOR_compiling_global___CompiledClass___instance_table))( variable1 /*cc*/) /*CompiledClass::instance_table*/;
-  variable4 = variable5;
-  variable5 = ((array___AbstractArray___iterator_t)CALL( variable4 /*itab*/,COLOR_abstract_collection___Collection___iterator))( variable4 /*itab*/) /*Array::iterator*/;
+    continue_198: while(0);
+    CALL_abstract_collection___Iterator___next(variable[6])(variable[6]) /*ArrayIterator::next*/;
+  }
+  break_198: while(0);
+  /* Register variable[6]: Result */
+  variable[6] = CALL_abstract_collection___Collection___length( variable[4] /*ctab*/)( variable[4] /*ctab*/) /*AbstractArrayRead::length*/;
+  /* Register variable[6]: Result */
+  variable[6] = TAG_Bool(UNTAG_Int( variable[5] /*clen*/)>UNTAG_Int(variable[6]));
+  if (UNTAG_Bool(variable[6])) { /*if*/
+    /* Register variable[6]: Once String constant */
+    if (once_value_202 != NIT_NULL) variable[6] = once_value_202;
+    else {
+      variable[6] = NEW_String_string___String___with_native(BOX_NativeString("{0},"), TAG_Int(4)) /*new String*/;
+      once_value_202 = variable[6];
+    }
+    /* Register variable[6]: Result */
+    /* Register variable[7]: Result */
+    variable[7] = CALL_abstract_collection___Collection___length( variable[4] /*ctab*/)( variable[4] /*ctab*/) /*AbstractArrayRead::length*/;
+    /* Register variable[7]: Result */
+    variable[7] = TAG_Int(UNTAG_Int( variable[5] /*clen*/)-UNTAG_Int(variable[7]));
+    /* Register variable[6]: Result */
+    variable[6] = CALL_string___String_____star(variable[6])(variable[6], variable[7]) /*String::**/;
+    CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[6]) /*CompilerVisitor::add_instr*/;
+  }
+  CALL_compiling_base___CompilerVisitor___unindent( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::unindent*/;
+  /* Register variable[6]: Once String constant */
+  if (once_value_203 != NIT_NULL) variable[6] = once_value_203;
+  else {
+    variable[6] = NEW_String_string___String___with_native(BOX_NativeString("};"), TAG_Int(2)) /*new String*/;
+    once_value_203 = variable[6];
+  }
+  /* Register variable[6]: Result */
+  CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[6]) /*CompilerVisitor::add_instr*/;
+  /* Register variable[6]: Local variable */
+  /* Register variable[7]: Result */
+  variable[7] = CALL_compiling_global___CompiledClass___instance_table( variable[3] /*cc*/)( variable[3] /*cc*/) /*CompiledClass::instance_table*/;
+  variable[6] = variable[7];
+  /* Register variable[7]: For iterator */
+  variable[7] = CALL_abstract_collection___Collection___iterator( variable[6] /*itab*/)( variable[6] /*itab*/) /*AbstractArrayRead::iterator*/;
   while (true) { /*for*/
-    variable6 = ((array___ArrayIterator___is_ok_t)CALL(variable5,COLOR_abstract_collection___Iterator___is_ok))(variable5) /*ArrayIterator::is_ok*/;
-    if (!UNTAG_Bool(variable6)) break; /*for*/
-    variable6 = ((array___ArrayIterator___item_t)CALL(variable5,COLOR_abstract_collection___Iterator___item))(variable5) /*ArrayIterator::item*/;
-    variable7 = TAG_Bool(( variable6 /*e*/ ==  NIT_NULL /*null*/) || (( variable6 /*e*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*e*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*e*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*e*/,COLOR_kernel___Object_____eqeq))( variable6 /*e*/,  NIT_NULL /*null*/) /*TableElt::==*/)))));
-    if (UNTAG_Bool(variable7)) { /*if*/
-      variable7 = NEW_string___String___with_native(BOX_NativeString("/* Instance Hole :( */"), TAG_Int(22)); /*new String*/
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable7) /*CompilerVisitor::add_instr*/;
+    /* Register variable[8]: For 'is_ok' result */
+    variable[8] = CALL_abstract_collection___Iterator___is_ok(variable[7])(variable[7]) /*ArrayIterator::is_ok*/;
+    if (!UNTAG_Bool(variable[8])) break; /*for*/
+    variable[8] = CALL_abstract_collection___Iterator___item(variable[7])(variable[7]) /*ArrayIterator::item*/ /* Ensure var: For item*/;
+    /* Register variable[9]: Local variable */
+    variable[9] = variable[8];
+    /* Register variable[10]: Result */
+    variable[10] = TAG_Bool(( variable[9] /*e*/ ==  NIT_NULL /*null*/) || (( variable[9] /*e*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[9] /*e*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[9] /*e*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[9] /*e*/)( variable[9] /*e*/,  NIT_NULL /*null*/) /*Object::==*/)))));
+    if (UNTAG_Bool(variable[10])) { /*if*/
+      /* Register variable[10]: Once String constant */
+      if (once_value_205 != NIT_NULL) variable[10] = once_value_205;
+      else {
+        variable[10] = NEW_String_string___String___with_native(BOX_NativeString("/* Instance Hole :( */"), TAG_Int(22)) /*new String*/;
+        once_value_205 = variable[10];
+      }
+      /* Register variable[10]: Result */
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[10]) /*CompilerVisitor::add_instr*/;
     } else { /*if*/
-      variable7 = ((compiling_global___TableElt___compile_to_c_t)CALL( variable6 /*e*/,COLOR_compiling_global___TableElt___compile_to_c))( variable6 /*e*/,  variable0 /*v*/,  self) /*TableElt::compile_to_c*/;
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable7) /*CompilerVisitor::add_instr*/;
+      /* Register variable[10]: Result */
+      variable[10] = CALL_compiling_global___TableElt___compile_to_c( variable[9] /*e*/)( variable[9] /*e*/,  variable[1] /*v*/, variable[0]) /*TableElt::compile_to_c*/;
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[10]) /*CompilerVisitor::add_instr*/;
+    }
+    continue_204: while(0);
+    CALL_abstract_collection___Iterator___next(variable[7])(variable[7]) /*ArrayIterator::next*/;
+  }
+  break_204: while(0);
+  /* Register variable[7]: Local variable */
+  /* Register variable[8]: Result */
+  variable[8] = CALL_compiling_base___MMLocalClass___primitive_info(variable[0])(variable[0]) /*MMLocalClass::primitive_info*/;
+  variable[7] = variable[8];
+  /* Register variable[8]: Result */
+  variable[8] = TAG_Bool(( variable[7] /*pi*/ ==  NIT_NULL /*null*/) || (( variable[7] /*pi*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[7] /*pi*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[7] /*pi*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[7] /*pi*/)( variable[7] /*pi*/,  NIT_NULL /*null*/) /*Object::==*/)))));
+  if (UNTAG_Bool(variable[8])) { /*if*/
+    /* Register variable[8]: Result */
+    variable[8] = NEW_CFunctionContext_compiling_methods___CFunctionContext___init( variable[1] /*v*/) /*new CFunctionContext*/;
+    CALL_compiling_methods___CompilerVisitor___cfc__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[8]) /*CompilerVisitor::cfc=*/;
+    /* Register variable[8]: Result */
+    variable[8] = NEW_NitMethodContext_compiling_methods___NitMethodContext___init( NIT_NULL /*null*/) /*new NitMethodContext*/;
+    CALL_compiling_methods___CompilerVisitor___nmc__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[8]) /*CompilerVisitor::nmc=*/;
+    /* Register variable[8]: Local variable */
+    variable[9] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+    /* Register variable[10]: Once String constant */
+    if (once_value_206 != NIT_NULL) variable[10] = once_value_206;
+    else {
+      variable[10] = NEW_String_string___String___with_native(BOX_NativeString("val_t NEW_"), TAG_Int(10)) /*new String*/;
+      once_value_206 = variable[10];
+    }
+    /* Register variable[10]: Result */
+    /* Ensure var variable[10]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
+    /* Register variable[10]: Result */
+    variable[10] = CALL_abstractmetamodel___MMLocalClass___name(variable[0])(variable[0]) /*MMLocalClass::name*/;
+    /* Ensure var variable[10]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/) /*AbstractArray::add*/;
+    /* Register variable[10]: Once String constant */
+    if (once_value_207 != NIT_NULL) variable[10] = once_value_207;
+    else {
+      variable[10] = NEW_String_string___String___with_native(BOX_NativeString("(void)"), TAG_Int(6)) /*new String*/;
+      once_value_207 = variable[10];
+    }
+    /* Register variable[10]: Result */
+    /* Ensure var variable[10]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[9])(variable[9], variable[10]) /*AbstractArray::add*/;
+    /* Register variable[9]: Result */
+    variable[9] = CALL_string___Object___to_s(variable[9])(variable[9]) /*Object::to_s*/;
+    variable[8] = variable[9];
+    /* Register variable[9]: Once String constant */
+    if (once_value_208 != NIT_NULL) variable[9] = once_value_208;
+    else {
+      variable[9] = NEW_String_string___String___with_native(BOX_NativeString(" {"), TAG_Int(2)) /*new String*/;
+      once_value_208 = variable[9];
+    }
+    /* Register variable[9]: Result */
+    /* Register variable[9]: Result */
+    variable[9] = CALL_string___String_____plus( variable[8] /*s*/)( variable[8] /*s*/, variable[9]) /*String::+*/;
+    CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[9]) /*CompilerVisitor::add_instr*/;
+    CALL_compiling_base___CompilerVisitor___indent( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::indent*/;
+    /* Register variable[9]: Local variable */
+    /* Register variable[10]: Result */
+    variable[10] = CALL_compiling_base___CompilerVisitor___ctx( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::ctx*/;
+    variable[9] = variable[10];
+    /* Register variable[10]: Result */
+    variable[10] = NEW_CContext_compiling_base___CContext___init() /*new CContext*/;
+    CALL_compiling_base___CompilerVisitor___ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[10]) /*CompilerVisitor::ctx=*/;
+    /* Register variable[10]: Local variable */
+    /* Register variable[11]: Result */
+    variable[11] = NEW_ParamVariable_syntax_base___ParamVariable___init( NIT_NULL /*null*/,  NIT_NULL /*null*/) /*new ParamVariable*/;
+    variable[10] = variable[11];
+    /* Register variable[11]: Local variable */
+    /* Register variable[12]: Result */
+    variable[12] = CALL_compiling_methods___CompilerVisitor___cfc( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::cfc*/;
+    /* Register variable[12]: Result */
+    variable[12] = CALL_compiling_methods___CFunctionContext___register_variable(variable[12])(variable[12],  variable[10] /*self_var*/) /*CFunctionContext::register_variable*/;
+    variable[11] = variable[12];
+    /* Register variable[12]: Result */
+    variable[12] = CALL_compiling_methods___CompilerVisitor___nmc( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::nmc*/;
+    variable[13] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[ParamVariable]*/ /* Ensure var: Literal array*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13],  variable[10] /*self_var*/) /*AbstractArray::add*/;
+    /* Register variable[13]: Result */
+    CALL_compiling_methods___NitMethodContext___method_params__eq(variable[12])(variable[12], variable[13]) /*NitMethodContext::method_params=*/;
+    /* Register variable[12]: Once String constant */
+    if (once_value_209 != NIT_NULL) variable[12] = once_value_209;
+    else {
+      variable[12] = NEW_String_string___String___with_native(BOX_NativeString("obj_t obj;"), TAG_Int(10)) /*new String*/;
+      once_value_209 = variable[12];
+    }
+    /* Register variable[12]: Result */
+    CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[12]) /*CompilerVisitor::add_instr*/;
+    variable[12] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+    /* Register variable[13]: Once String constant */
+    if (once_value_210 != NIT_NULL) variable[13] = once_value_210;
+    else {
+      variable[13] = NEW_String_string___String___with_native(BOX_NativeString("obj = alloc(sizeof(val_t) * "), TAG_Int(28)) /*new String*/;
+      once_value_210 = variable[13];
+    }
+    /* Register variable[13]: Result */
+    /* Ensure var variable[13]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[13]) /*AbstractArray::add*/;
+    /* Register variable[13]: Result */
+    variable[13] = CALL_abstract_collection___Collection___length( variable[6] /*itab*/)( variable[6] /*itab*/) /*AbstractArrayRead::length*/;
+    /* Ensure var variable[13]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/) /*AbstractArray::add*/;
+    /* Register variable[13]: Once String constant */
+    if (once_value_211 != NIT_NULL) variable[13] = once_value_211;
+    else {
+      variable[13] = NEW_String_string___String___with_native(BOX_NativeString(");"), TAG_Int(2)) /*new String*/;
+      once_value_211 = variable[13];
+    }
+    /* Register variable[13]: Result */
+    /* Ensure var variable[13]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[13]) /*AbstractArray::add*/;
+    /* Register variable[12]: Result */
+    variable[12] = CALL_string___Object___to_s(variable[12])(variable[12]) /*Object::to_s*/;
+    CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[12]) /*CompilerVisitor::add_instr*/;
+    variable[12] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+    /* Register variable[13]: Once String constant */
+    if (once_value_212 != NIT_NULL) variable[13] = once_value_212;
+    else {
+      variable[13] = NEW_String_string___String___with_native(BOX_NativeString("obj->vft = (classtable_elt_t*)VFT_"), TAG_Int(34)) /*new String*/;
+      once_value_212 = variable[13];
+    }
+    /* Register variable[13]: Result */
+    /* Ensure var variable[13]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[13]) /*AbstractArray::add*/;
+    /* Register variable[13]: Result */
+    variable[13] = CALL_abstractmetamodel___MMLocalClass___name(variable[0])(variable[0]) /*MMLocalClass::name*/;
+    /* Ensure var variable[13]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/) /*AbstractArray::add*/;
+    /* Register variable[13]: Once String constant */
+    if (once_value_213 != NIT_NULL) variable[13] = once_value_213;
+    else {
+      variable[13] = NEW_String_string___String___with_native(BOX_NativeString(";"), TAG_Int(1)) /*new String*/;
+      once_value_213 = variable[13];
+    }
+    /* Register variable[13]: Result */
+    /* Ensure var variable[13]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[12])(variable[12], variable[13]) /*AbstractArray::add*/;
+    /* Register variable[12]: Result */
+    variable[12] = CALL_string___Object___to_s(variable[12])(variable[12]) /*Object::to_s*/;
+    CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[12]) /*CompilerVisitor::add_instr*/;
+    /* Register variable[12]: Once String constant */
+    if (once_value_214 != NIT_NULL) variable[12] = once_value_214;
+    else {
+      variable[12] = NEW_String_string___String___with_native(BOX_NativeString("OBJ2VAL(obj)"), TAG_Int(12)) /*new String*/;
+      once_value_214 = variable[12];
     }
-    continue_103: while(0);
-    ((array___ArrayIterator___next_t)CALL(variable5,COLOR_abstract_collection___Iterator___next))(variable5) /*ArrayIterator::next*/;
-  }
-  break_103: while(0);
-  variable6 = ((compiling_base___MMLocalClass___primitive_info_t)CALL( self,COLOR_compiling_base___MMLocalClass___primitive_info))( self) /*MMLocalClass::primitive_info*/;
-  variable5 = variable6;
-  variable6 = TAG_Bool(( variable5 /*pi*/ ==  NIT_NULL /*null*/) || (( variable5 /*pi*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*pi*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*pi*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*pi*/,COLOR_kernel___Object_____eqeq))( variable5 /*pi*/,  NIT_NULL /*null*/) /*PrimitiveInfo::==*/)))));
-  if (UNTAG_Bool(variable6)) { /*if*/
-    ((compiling_methods___CompilerVisitor___clear_t)CALL( variable0 /*v*/,COLOR_compiling_methods___CompilerVisitor___clear))( variable0 /*v*/) /*CompilerVisitor::clear*/;
-    variable7 = NEW_string___String___init(); /*new String*/
-    variable8 = NEW_string___String___with_native(BOX_NativeString("val_t NEW_"), TAG_Int(10)); /*new String*/
-    variable9 = variable8;
-    ((string___String___append_t)CALL(variable7,COLOR_abstract_collection___IndexedCollection___append))(variable7, variable9) /*String::append*/;
-    variable10 = ((abstractmetamodel___MMLocalClass___name_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___name))( self) /*MMLocalClass::name*/;
-    variable11 = variable10;
-    variable11 = ((string___String___to_s_t)CALL(variable11,COLOR_string___Object___to_s))(variable11) /*String::to_s*/;
-    ((string___String___append_t)CALL(variable7,COLOR_abstract_collection___IndexedCollection___append))(variable7, variable11) /*String::append*/;
-    variable12 = NEW_string___String___with_native(BOX_NativeString("(void)"), TAG_Int(6)); /*new String*/
-    variable13 = variable12;
-    ((string___String___append_t)CALL(variable7,COLOR_abstract_collection___IndexedCollection___append))(variable7, variable13) /*String::append*/;
-    variable6 = variable7;
-    variable7 = NEW_string___String___with_native(BOX_NativeString(" {"), TAG_Int(2)); /*new String*/
-    variable7 = ((string___String_____plus_t)CALL( variable6 /*s*/,COLOR_string___String_____plus))( variable6 /*s*/, variable7) /*String::+*/;
-    ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable7) /*CompilerVisitor::add_instr*/;
-    ((compiling_base___CompilerVisitor___indent_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___indent))( variable0 /*v*/) /*CompilerVisitor::indent*/;
-    variable8 = ((compiling_base___CompilerVisitor___ctx_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___ctx))( variable0 /*v*/) /*CompilerVisitor::ctx*/;
-    variable7 = variable8;
-    variable8 = NEW_compiling_base___CContext___init(); /*new CContext*/
-    ((compiling_base___CompilerVisitor___ctx__eq_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___ctx__eq))( variable0 /*v*/, variable8) /*CompilerVisitor::ctx=*/;
-    variable8 = NEW_array___Array___with_capacity(TAG_Int(1)); /*new Array[String]*/
-    variable9 = NEW_string___String___with_native(BOX_NativeString("OBJ2VAL(obj)"), TAG_Int(12)); /*new String*/
-    ((array___AbstractArray___add_t)CALL(variable8,COLOR_abstract_collection___SimpleCollection___add))(variable8, variable9) /*Array::add*/;
-    ((compiling_methods___CompilerVisitor___method_params__eq_t)CALL( variable0 /*v*/,COLOR_compiling_methods___CompilerVisitor___method_params__eq))( variable0 /*v*/, variable8) /*CompilerVisitor::method_params=*/;
-    variable8 = NEW_string___String___with_native(BOX_NativeString("obj_t obj;"), TAG_Int(10)); /*new String*/
-    ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable8) /*CompilerVisitor::add_instr*/;
-    variable8 = NEW_string___String___init(); /*new String*/
-    variable9 = NEW_string___String___with_native(BOX_NativeString("obj = alloc(sizeof(val_t) * "), TAG_Int(28)); /*new String*/
-    variable10 = variable9;
-    ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable10) /*String::append*/;
-    variable11 = ((array___AbstractArray___length_t)CALL( variable4 /*itab*/,COLOR_abstract_collection___Collection___length))( variable4 /*itab*/) /*Array::length*/;
-    variable12 = variable11;
-    variable12 = ((string___String___to_s_t)CALL(variable12,COLOR_string___Object___to_s))(variable12) /*String::to_s*/;
-    ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable12) /*String::append*/;
-    variable13 = NEW_string___String___with_native(BOX_NativeString(");"), TAG_Int(2)); /*new String*/
-    variable14 = variable13;
-    ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable14) /*String::append*/;
-    ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable8) /*CompilerVisitor::add_instr*/;
-    variable8 = NEW_string___String___init(); /*new String*/
-    variable9 = NEW_string___String___with_native(BOX_NativeString("obj->vft = (classtable_elt_t*)VFT_"), TAG_Int(34)); /*new String*/
-    variable10 = variable9;
-    ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable10) /*String::append*/;
-    variable11 = ((abstractmetamodel___MMLocalClass___name_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___name))( self) /*MMLocalClass::name*/;
-    variable12 = variable11;
-    variable12 = ((string___String___to_s_t)CALL(variable12,COLOR_string___Object___to_s))(variable12) /*String::to_s*/;
-    ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable12) /*String::append*/;
-    variable13 = NEW_string___String___with_native(BOX_NativeString(";"), TAG_Int(1)); /*new String*/
-    variable14 = variable13;
-    ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable14) /*String::append*/;
-    ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable8) /*CompilerVisitor::add_instr*/;
-    variable8 = ((abstractmetamodel___MMLocalClass___global_properties_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___global_properties))( self) /*MMLocalClass::global_properties*/;
-    variable8 = ((abstract_collection___Collection___iterator_t)CALL(variable8,COLOR_abstract_collection___Collection___iterator))(variable8) /*Set::iterator*/;
+    /* Register variable[12]: Result */
+    CALL_compiling_methods___CompilerVisitor___add_assignment( variable[1] /*v*/)( variable[1] /*v*/,  variable[11] /*self_var_cname*/, variable[12]) /*CompilerVisitor::add_assignment*/;
+    /* Register variable[12]: Result */
+    variable[12] = CALL_abstractmetamodel___MMLocalClass___global_properties(variable[0])(variable[0]) /*MMLocalClass::global_properties*/;
+    /* Register variable[12]: For iterator */
+    variable[12] = CALL_abstract_collection___Collection___iterator(variable[12])(variable[12]) /*Collection::iterator*/;
     while (true) { /*for*/
-      variable9 = ((abstract_collection___Iterator___is_ok_t)CALL(variable8,COLOR_abstract_collection___Iterator___is_ok))(variable8) /*Iterator::is_ok*/;
-      if (!UNTAG_Bool(variable9)) break; /*for*/
-      variable9 = ((abstract_collection___Iterator___item_t)CALL(variable8,COLOR_abstract_collection___Iterator___item))(variable8) /*Iterator::item*/;
-      variable11 = ((inheritance___MMLocalClass_____bra_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass_____bra))( self,  variable9 /*g*/) /*MMLocalClass::[]*/;
-      variable10 = variable11;
-      variable12 = ((genericity___MMLocalProperty___signature_t)CALL( variable10 /*p*/,COLOR_static_type___MMLocalProperty___signature))( variable10 /*p*/) /*MMLocalProperty::signature*/;
-      variable12 = ((static_type___MMSignature___return_type_t)CALL(variable12,COLOR_static_type___MMSignature___return_type))(variable12) /*MMSignature::return_type*/;
-      variable11 = variable12;
-      variable12 = TAG_Bool(( variable10 /*p*/==NIT_NULL) || VAL_ISA( variable10 /*p*/, COLOR_MMAttribute, ID_MMAttribute)) /*cast MMAttribute*/;
-      variable13 = variable12;
-      if (UNTAG_Bool(variable13)) { /* and */
-        variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*t*/ ==  NIT_NULL /*null*/) || (( variable11 /*t*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*t*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*t*/,COLOR_kernel___Object_____eqeq))( variable11 /*t*/,  NIT_NULL /*null*/) /*MMType::==*/)))))));
-      }
-      variable12 = variable13;
-      if (UNTAG_Bool(variable12)) { /*if*/
-        variable13 = ((abstractmetamodel___MMLocalProperty___concrete_property_t)CALL( variable10 /*p*/,COLOR_abstractmetamodel___MMLocalProperty___concrete_property))( variable10 /*p*/) /*MMAttribute::concrete_property*/;
-        variable12 = variable13;
-        variable13 = TAG_Bool(( variable12 /*pi*/==NIT_NULL) || VAL_ISA( variable12 /*pi*/, COLOR_MMSrcAttribute, ID_MMSrcAttribute)) /*cast MMSrcAttribute*/;
-        if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert failed: src/compiling//compiling_global.nit:857,6--33\n"); nit_exit(1);}
-        variable14 = ((syntax_base___MMSrcLocalProperty___node_t)CALL( variable12 /*pi*/,COLOR_syntax_base___MMSrcLocalProperty___node))( variable12 /*pi*/) /*MMSrcAttribute::node*/;
-        variable13 = variable14;
-        variable14 = TAG_Bool(( variable13 /*np*/==NIT_NULL) || VAL_ISA( variable13 /*np*/, COLOR_AAttrPropdef, ID_AAttrPropdef)) /*cast AAttrPropdef*/;
-        if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert failed: src/compiling//compiling_global.nit:859,6--31\n"); nit_exit(1);}
-        variable15 = ((parser_nodes___AAttrPropdef___n_expr_t)CALL( variable13 /*np*/,COLOR_parser_nodes___AAttrPropdef___n_expr))( variable13 /*np*/) /*AAttrPropdef::n_expr*/;
-        variable14 = variable15;
-        variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*ne*/ ==  NIT_NULL /*null*/) || (( variable14 /*ne*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*ne*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*ne*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*ne*/,COLOR_kernel___Object_____eqeq))( variable14 /*ne*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
-        if (UNTAG_Bool(variable15)) { /*if*/
-          variable16 = ((compiling_methods___PExpr___compile_expr_t)CALL( variable14 /*ne*/,COLOR_compiling_methods___PExpr___compile_expr))( variable14 /*ne*/,  variable0 /*v*/) /*PExpr::compile_expr*/;
-          variable15 = variable16;
-          variable16 = NEW_string___String___init(); /*new String*/
-          variable17 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-          variable18 = variable17;
-          ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable18) /*String::append*/;
-          variable19 = ((abstractmetamodel___MMLocalProperty___global_t)CALL( variable10 /*p*/,COLOR_abstractmetamodel___MMLocalProperty___global))( variable10 /*p*/) /*MMAttribute::global*/;
-          variable19 = ((compiling_base___MMGlobalProperty___attr_access_t)CALL(variable19,COLOR_compiling_base___MMGlobalProperty___attr_access))(variable19) /*MMGlobalProperty::attr_access*/;
-          variable20 = variable19;
-          ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable20) /*String::append*/;
-          variable21 = NEW_string___String___with_native(BOX_NativeString("(obj) = "), TAG_Int(8)); /*new String*/
-          variable22 = variable21;
-          ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable22) /*String::append*/;
-          variable23 =  variable15 /*e*/;
-          ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable23) /*String::append*/;
-          variable24 = NEW_string___String___with_native(BOX_NativeString(";"), TAG_Int(1)); /*new String*/
-          variable25 = variable24;
-          ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable25) /*String::append*/;
-          ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable16) /*CompilerVisitor::add_instr*/;
-        } else { /*if*/
-          variable16 = ((static_type___MMType___local_class_t)CALL( variable11 /*t*/,COLOR_static_type___MMType___local_class))( variable11 /*t*/) /*MMType::local_class*/;
-          variable16 = ((compiling_base___MMLocalClass___primitive_info_t)CALL(variable16,COLOR_compiling_base___MMLocalClass___primitive_info))(variable16) /*MMLocalClass::primitive_info*/;
-          variable15 = variable16;
-          variable16 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable15 /*pi*/ ==  NIT_NULL /*null*/) || (( variable15 /*pi*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable15 /*pi*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable15 /*pi*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable15 /*pi*/,COLOR_kernel___Object_____eqeq))( variable15 /*pi*/,  NIT_NULL /*null*/) /*PrimitiveInfo::==*/)))))));
-          variable17 = variable16;
-          if (UNTAG_Bool(variable17)) { /* and */
-            variable17 = ((compiling_base___PrimitiveInfo___tagged_t)CALL( variable15 /*pi*/,COLOR_compiling_base___PrimitiveInfo___tagged))( variable15 /*pi*/) /*PrimitiveInfo::tagged*/;
+      /* Register variable[13]: For 'is_ok' result */
+      variable[13] = CALL_abstract_collection___Iterator___is_ok(variable[12])(variable[12]) /*Iterator::is_ok*/;
+      if (!UNTAG_Bool(variable[13])) break; /*for*/
+      variable[13] = CALL_abstract_collection___Iterator___item(variable[12])(variable[12]) /*Iterator::item*/ /* Ensure var: For item*/;
+      /* Register variable[14]: Local variable */
+      variable[14] = variable[13];
+      /* Register variable[15]: Local variable */
+      /* Register variable[16]: Result */
+      variable[16] = CALL_abstractmetamodel___MMLocalClass_____bra(variable[0])(variable[0],  variable[14] /*g*/) /*MMLocalClass::[]*/;
+      variable[15] = variable[16];
+      /* Register variable[16]: Local variable */
+      /* Register variable[17]: Result */
+      variable[17] = CALL_static_type___MMLocalProperty___signature( variable[15] /*p*/)( variable[15] /*p*/) /*MMLocalProperty::signature*/;
+      /* Register variable[17]: Result */
+      variable[17] = CALL_static_type___MMSignature___return_type(variable[17])(variable[17]) /*MMSignature::return_type*/;
+      variable[16] = variable[17];
+      /* Register variable[17]: Result */
+      variable[17] = TAG_Bool(( variable[15] /*p*/==NIT_NULL) || VAL_ISA( variable[15] /*p*/, COLOR_MMAttribute, ID_MMAttribute)) /*cast MMAttribute*/;
+      /* Ensure var variable[17]: Left 'and' operand*/
+      if (UNTAG_Bool(variable[17])) { /* and */
+        /* Register variable[17]: Result */
+        variable[17] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[16] /*t*/ ==  NIT_NULL /*null*/) || (( variable[16] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[16] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[16] /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[16] /*t*/)( variable[16] /*t*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      }
+      /* Register variable[17]: Result */
+      if (UNTAG_Bool(variable[17])) { /*if*/
+        /* Register variable[17]: Result */
+        variable[17] = TAG_Bool(( variable[15] /*p*/==NIT_NULL) || VAL_ISA( variable[15] /*p*/, COLOR_MMSrcAttribute, ID_MMSrcAttribute)) /*cast MMSrcAttribute*/;
+        if (!UNTAG_Bool(variable[17])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_compiling_global___MMLocalClass___compile_tables_to_c, LOCATE_compiling_global, 891); nit_exit(1);}
+        /* Register variable[17]: Local variable */
+        /* Register variable[18]: Result */
+        variable[18] = CALL_syntax_base___MMLocalProperty___node( variable[15] /*p*/)( variable[15] /*p*/) /*MMSrcAttribute::node*/;
+        variable[17] = variable[18];
+        /* Register variable[18]: Result */
+        variable[18] = TAG_Bool(( variable[17] /*np*/==NIT_NULL) || VAL_ISA( variable[17] /*np*/, COLOR_AAttrPropdef, ID_AAttrPropdef)) /*cast AAttrPropdef*/;
+        if (!UNTAG_Bool(variable[18])) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_compiling_global___MMLocalClass___compile_tables_to_c, LOCATE_compiling_global, 893); nit_exit(1);}
+        /* Register variable[18]: Local variable */
+        /* Register variable[19]: Result */
+        variable[19] = CALL_parser_nodes___AAttrPropdef___n_expr( variable[17] /*np*/)( variable[17] /*np*/) /*AAttrPropdef::n_expr*/;
+        variable[18] = variable[19];
+        /* Register variable[19]: Result */
+        variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*ne*/ ==  NIT_NULL /*null*/) || (( variable[18] /*ne*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[18] /*ne*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*ne*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[18] /*ne*/)( variable[18] /*ne*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+        if (UNTAG_Bool(variable[19])) { /*if*/
+          /* Register variable[19]: Local variable */
+          /* Register variable[20]: Result */
+          variable[20] = CALL_compiling_methods___PExpr___compile_expr( variable[18] /*ne*/)( variable[18] /*ne*/,  variable[1] /*v*/) /*PExpr::compile_expr*/;
+          variable[19] = variable[20];
+          variable[20] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+          /* Register variable[21]: Once String constant */
+          if (once_value_216 != NIT_NULL) variable[21] = once_value_216;
+          else {
+            variable[21] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+            once_value_216 = variable[21];
           }
-          variable16 = variable17;
-          if (UNTAG_Bool(variable16)) { /*if*/
-            variable17 = ((compiling_base___MMType___default_cvalue_t)CALL( variable11 /*t*/,COLOR_compiling_base___MMType___default_cvalue))( variable11 /*t*/) /*MMType::default_cvalue*/;
-            variable16 = variable17;
-            variable17 = NEW_string___String___init(); /*new String*/
-            variable18 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-            variable19 = variable18;
-            ((string___String___append_t)CALL(variable17,COLOR_abstract_collection___IndexedCollection___append))(variable17, variable19) /*String::append*/;
-            variable20 = ((abstractmetamodel___MMLocalProperty___global_t)CALL( variable10 /*p*/,COLOR_abstractmetamodel___MMLocalProperty___global))( variable10 /*p*/) /*MMAttribute::global*/;
-            variable20 = ((compiling_base___MMGlobalProperty___attr_access_t)CALL(variable20,COLOR_compiling_base___MMGlobalProperty___attr_access))(variable20) /*MMGlobalProperty::attr_access*/;
-            variable21 = variable20;
-            ((string___String___append_t)CALL(variable17,COLOR_abstract_collection___IndexedCollection___append))(variable17, variable21) /*String::append*/;
-            variable22 = NEW_string___String___with_native(BOX_NativeString("(obj) = "), TAG_Int(8)); /*new String*/
-            variable23 = variable22;
-            ((string___String___append_t)CALL(variable17,COLOR_abstract_collection___IndexedCollection___append))(variable17, variable23) /*String::append*/;
-            variable24 =  variable16 /*default*/;
-            ((string___String___append_t)CALL(variable17,COLOR_abstract_collection___IndexedCollection___append))(variable17, variable24) /*String::append*/;
-            variable25 = NEW_string___String___with_native(BOX_NativeString(";"), TAG_Int(1)); /*new String*/
-            variable26 = variable25;
-            ((string___String___append_t)CALL(variable17,COLOR_abstract_collection___IndexedCollection___append))(variable17, variable26) /*String::append*/;
-            ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable17) /*CompilerVisitor::add_instr*/;
+          /* Register variable[21]: Result */
+          /* Ensure var variable[21]: super-string element*/
+          CALL_abstract_collection___SimpleCollection___add(variable[20])(variable[20], variable[21]) /*AbstractArray::add*/;
+          /* Register variable[21]: Result */
+          variable[21] = CALL_abstractmetamodel___MMLocalProperty___global( variable[15] /*p*/)( variable[15] /*p*/) /*MMLocalProperty::global*/;
+          /* Register variable[21]: Result */
+          variable[21] = CALL_compiling_base___MMGlobalProperty___attr_access(variable[21])(variable[21]) /*MMGlobalProperty::attr_access*/;
+          /* Ensure var variable[21]: super-string element*/
+          CALL_abstract_collection___SimpleCollection___add(variable[20])(variable[20], variable[21]) /*AbstractArray::add*/;
+          /* Register variable[21]: Once String constant */
+          if (once_value_217 != NIT_NULL) variable[21] = once_value_217;
+          else {
+            variable[21] = NEW_String_string___String___with_native(BOX_NativeString("(obj) = "), TAG_Int(8)) /*new String*/;
+            once_value_217 = variable[21];
           }
+          /* Register variable[21]: Result */
+          /* Ensure var variable[21]: super-string element*/
+          CALL_abstract_collection___SimpleCollection___add(variable[20])(variable[20], variable[21]) /*AbstractArray::add*/;
+          variable[21] =  variable[19] /*e*/ /* Ensure var: super-string element*/;
+          CALL_abstract_collection___SimpleCollection___add(variable[20])(variable[20], variable[21]) /*AbstractArray::add*/;
+          /* Register variable[21]: Once String constant */
+          if (once_value_218 != NIT_NULL) variable[21] = once_value_218;
+          else {
+            variable[21] = NEW_String_string___String___with_native(BOX_NativeString(";"), TAG_Int(1)) /*new String*/;
+            once_value_218 = variable[21];
+          }
+          /* Register variable[21]: Result */
+          /* Ensure var variable[21]: super-string element*/
+          CALL_abstract_collection___SimpleCollection___add(variable[20])(variable[20], variable[21]) /*AbstractArray::add*/;
+          /* Register variable[20]: Result */
+          variable[20] = CALL_string___Object___to_s(variable[20])(variable[20]) /*Object::to_s*/;
+          CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[20]) /*CompilerVisitor::add_instr*/;
         }
       }
-      continue_104: while(0);
-      ((abstract_collection___Iterator___next_t)CALL(variable8,COLOR_abstract_collection___Iterator___next))(variable8) /*Iterator::next*/;
+      continue_215: while(0);
+      CALL_abstract_collection___Iterator___next(variable[12])(variable[12]) /*Iterator::next*/;
+    }
+    break_215: while(0);
+    /* Register variable[12]: Once String constant */
+    if (once_value_219 != NIT_NULL) variable[12] = once_value_219;
+    else {
+      variable[12] = NEW_String_string___String___with_native(BOX_NativeString("return OBJ2VAL(obj);"), TAG_Int(20)) /*new String*/;
+      once_value_219 = variable[12];
+    }
+    /* Register variable[12]: Result */
+    CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[12]) /*CompilerVisitor::add_instr*/;
+    /* Register variable[12]: Result */
+    variable[12] = CALL_compiling_methods___CompilerVisitor___cfc( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::cfc*/;
+    CALL_compiling_methods___CFunctionContext___generate_var_decls(variable[12])(variable[12]) /*CFunctionContext::generate_var_decls*/;
+    /* Register variable[12]: Result */
+    variable[12] = CALL_compiling_base___CompilerVisitor___ctx( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::ctx*/;
+    CALL_compiling_base___CContext___append( variable[9] /*ctx_old*/)( variable[9] /*ctx_old*/, variable[12]) /*CContext::append*/;
+    CALL_compiling_base___CompilerVisitor___ctx__eq( variable[1] /*v*/)( variable[1] /*v*/,  variable[9] /*ctx_old*/) /*CompilerVisitor::ctx=*/;
+    CALL_compiling_base___CompilerVisitor___unindent( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::unindent*/;
+    /* Register variable[12]: Once String constant */
+    if (once_value_220 != NIT_NULL) variable[12] = once_value_220;
+    else {
+      variable[12] = NEW_String_string___String___with_native(BOX_NativeString("}"), TAG_Int(1)) /*new String*/;
+      once_value_220 = variable[12];
+    }
+    /* Register variable[12]: Result */
+    CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[12]) /*CompilerVisitor::add_instr*/;
+    /* Register variable[12]: Local variable */
+    variable[13] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+    /* Register variable[14]: Once String constant */
+    if (once_value_221 != NIT_NULL) variable[14] = once_value_221;
+    else {
+      variable[14] = NEW_String_string___String___with_native(BOX_NativeString("void CHECKNEW_"), TAG_Int(14)) /*new String*/;
+      once_value_221 = variable[14];
     }
-    break_104: while(0);
-    variable8 = NEW_string___String___with_native(BOX_NativeString("return OBJ2VAL(obj);"), TAG_Int(20)); /*new String*/
-    ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable8) /*CompilerVisitor::add_instr*/;
-    variable8 = ((compiling_base___CompilerVisitor___ctx_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___ctx))( variable0 /*v*/) /*CompilerVisitor::ctx*/;
-    ((compiling_base___CContext___append_t)CALL( variable7 /*ctx_old*/,COLOR_compiling_base___CContext___append))( variable7 /*ctx_old*/, variable8) /*CContext::append*/;
-    ((compiling_base___CompilerVisitor___ctx__eq_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___ctx__eq))( variable0 /*v*/,  variable7 /*ctx_old*/) /*CompilerVisitor::ctx=*/;
-    ((compiling_base___CompilerVisitor___unindent_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___unindent))( variable0 /*v*/) /*CompilerVisitor::unindent*/;
-    variable8 = NEW_string___String___with_native(BOX_NativeString("}"), TAG_Int(1)); /*new String*/
-    ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable8) /*CompilerVisitor::add_instr*/;
-    variable9 = ((abstractmetamodel___MMLocalClass___cshe_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___cshe))( self) /*MMLocalClass::cshe*/;
-    variable9 = ((partial_order___PartialOrderElement___greaters_t)CALL(variable9,COLOR_partial_order___PartialOrderElement___greaters))(variable9) /*PartialOrderElement::greaters*/;
-    variable9 = ((abstract_collection___Collection___length_t)CALL(variable9,COLOR_abstract_collection___Collection___length))(variable9) /*Set::length*/;
-    variable9 = TAG_Int(UNTAG_Int(variable9)+UNTAG_Int( TAG_Int(1)));
-    variable8 = variable9;
-    variable10 = NEW_string___String___init(); /*new String*/
-    variable11 = NEW_string___String___with_native(BOX_NativeString("int init_table["), TAG_Int(15)); /*new String*/
-    variable12 = variable11;
-    ((string___String___append_t)CALL(variable10,COLOR_abstract_collection___IndexedCollection___append))(variable10, variable12) /*String::append*/;
-    variable13 =  variable8 /*init_table_size*/;
-    variable13 = ((string___String___to_s_t)CALL(variable13,COLOR_string___Object___to_s))(variable13) /*String::to_s*/;
-    ((string___String___append_t)CALL(variable10,COLOR_abstract_collection___IndexedCollection___append))(variable10, variable13) /*String::append*/;
-    variable14 = NEW_string___String___with_native(BOX_NativeString("] = {0"), TAG_Int(6)); /*new String*/
-    variable15 = variable14;
-    ((string___String___append_t)CALL(variable10,COLOR_abstract_collection___IndexedCollection___append))(variable10, variable15) /*String::append*/;
-    variable16 = NEW_string___String___with_native(BOX_NativeString(", 0"), TAG_Int(3)); /*new String*/
-    variable17 = TAG_Int(UNTAG_Int( variable8 /*init_table_size*/)-UNTAG_Int( TAG_Int(1)));
-    variable16 = ((string___String_____star_t)CALL(variable16,COLOR_string___String_____star))(variable16, variable17) /*String::**/;
-    variable17 = variable16;
-    ((string___String___append_t)CALL(variable10,COLOR_abstract_collection___IndexedCollection___append))(variable10, variable17) /*String::append*/;
-    variable18 = NEW_string___String___with_native(BOX_NativeString("};"), TAG_Int(2)); /*new String*/
-    variable19 = variable18;
-    ((string___String___append_t)CALL(variable10,COLOR_abstract_collection___IndexedCollection___append))(variable10, variable19) /*String::append*/;
-    variable9 = variable10;
-    variable10 = ((abstractmetamodel___MMLocalClass___global_properties_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___global_properties))( self) /*MMLocalClass::global_properties*/;
-    variable10 = ((abstract_collection___Collection___iterator_t)CALL(variable10,COLOR_abstract_collection___Collection___iterator))(variable10) /*Set::iterator*/;
+    /* Register variable[14]: Result */
+    /* Ensure var variable[14]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/;
+    /* Register variable[14]: Result */
+    variable[14] = CALL_abstractmetamodel___MMLocalClass___name(variable[0])(variable[0]) /*MMLocalClass::name*/;
+    /* Ensure var variable[14]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], CALL_string___Object___to_s(variable[14])(variable[14]) /*Object::to_s*/) /*AbstractArray::add*/;
+    /* Register variable[14]: Once String constant */
+    if (once_value_222 != NIT_NULL) variable[14] = once_value_222;
+    else {
+      variable[14] = NEW_String_string___String___with_native(BOX_NativeString("(val_t self, char *from)"), TAG_Int(24)) /*new String*/;
+      once_value_222 = variable[14];
+    }
+    /* Register variable[14]: Result */
+    /* Ensure var variable[14]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[13])(variable[13], variable[14]) /*AbstractArray::add*/;
+    /* Register variable[13]: Result */
+    variable[13] = CALL_string___Object___to_s(variable[13])(variable[13]) /*Object::to_s*/;
+    variable[12] = variable[13];
+    /* Register variable[13]: Once String constant */
+    if (once_value_223 != NIT_NULL) variable[13] = once_value_223;
+    else {
+      variable[13] = NEW_String_string___String___with_native(BOX_NativeString(" {"), TAG_Int(2)) /*new String*/;
+      once_value_223 = variable[13];
+    }
+    /* Register variable[13]: Result */
+    /* Register variable[13]: Result */
+    variable[13] = CALL_string___String_____plus( variable[12] /*s*/)( variable[12] /*s*/, variable[13]) /*String::+*/;
+    CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[13]) /*CompilerVisitor::add_instr*/;
+    CALL_compiling_base___CompilerVisitor___indent( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::indent*/;
+    /* Register variable[13]: Local variable */
+    /* Register variable[14]: Result */
+    variable[14] = CALL_compiling_base___CompilerVisitor___ctx( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::ctx*/;
+    variable[13] = variable[14];
+    /* Register variable[14]: Result */
+    variable[14] = NEW_CContext_compiling_base___CContext___init() /*new CContext*/;
+    CALL_compiling_base___CompilerVisitor___ctx__eq( variable[1] /*v*/)( variable[1] /*v*/, variable[14]) /*CompilerVisitor::ctx=*/;
+    /* Register variable[14]: Result */
+    variable[14] = CALL_abstractmetamodel___MMLocalClass___global_properties(variable[0])(variable[0]) /*MMLocalClass::global_properties*/;
+    /* Register variable[14]: For iterator */
+    variable[14] = CALL_abstract_collection___Collection___iterator(variable[14])(variable[14]) /*Collection::iterator*/;
     while (true) { /*for*/
-      variable11 = ((abstract_collection___Iterator___is_ok_t)CALL(variable10,COLOR_abstract_collection___Iterator___is_ok))(variable10) /*Iterator::is_ok*/;
-      if (!UNTAG_Bool(variable11)) break; /*for*/
-      variable11 = ((abstract_collection___Iterator___item_t)CALL(variable10,COLOR_abstract_collection___Iterator___item))(variable10) /*Iterator::item*/;
-      variable13 = ((inheritance___MMLocalClass_____bra_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass_____bra))( self,  variable11 /*g*/) /*MMLocalClass::[]*/;
-      variable12 = variable13;
-      variable13 = ((abstractmetamodel___MMLocalProperty___global_t)CALL( variable12 /*p*/,COLOR_abstractmetamodel___MMLocalProperty___global))( variable12 /*p*/) /*MMLocalProperty::global*/;
-      variable13 = ((abstractmetamodel___MMGlobalProperty___is_init_t)CALL(variable13,COLOR_abstractmetamodel___MMGlobalProperty___is_init))(variable13) /*MMGlobalProperty::is_init*/;
-      variable13 =  TAG_Bool(!UNTAG_Bool(variable13));
-      if (!UNTAG_Bool(variable13)) { /* or */
-        variable13 = ((abstractmetamodel___MMLocalProperty___global_t)CALL( variable12 /*p*/,COLOR_abstractmetamodel___MMLocalProperty___global))( variable12 /*p*/) /*MMLocalProperty::global*/;
-        variable13 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL(variable13,COLOR_abstractmetamodel___MMGlobalProperty___intro))(variable13) /*MMGlobalProperty::intro*/;
-        variable13 = ((abstractmetamodel___MMLocalProperty___local_class_t)CALL(variable13,COLOR_abstractmetamodel___MMLocalProperty___local_class))(variable13) /*MMConcreteProperty::local_class*/;
-        variable13 = ((abstractmetamodel___MMLocalClass___global_t)CALL(variable13,COLOR_abstractmetamodel___MMLocalClass___global))(variable13) /*MMLocalClass::global*/;
-        variable14 = ((abstractmetamodel___MMLocalClass___global_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___global))( self) /*MMLocalClass::global*/;
-        variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable13 == variable14) || ((variable13 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable13,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable13,variable14)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable13,COLOR_kernel___Object_____eqeq))(variable13, variable14) /*MMGlobalClass::==*/)))))));
-      }
-      if (UNTAG_Bool(variable13)) { /*if*/
-        goto continue_105;
-      }
-      ((compiling_methods___CompilerVisitor___clear_t)CALL( variable0 /*v*/,COLOR_compiling_methods___CompilerVisitor___clear))( variable0 /*v*/) /*CompilerVisitor::clear*/;
-      variable14 = NEW_array___Array___init(); /*new Array[String]*/
-      variable13 = variable14;
-      variable15 = NEW_array___Array___with_capacity(TAG_Int(1)); /*new Array[String]*/
-      variable16 = NEW_string___String___with_native(BOX_NativeString("self"), TAG_Int(4)); /*new String*/
-      ((array___AbstractArray___add_t)CALL(variable15,COLOR_abstract_collection___SimpleCollection___add))(variable15, variable16) /*Array::add*/;
-      variable14 = variable15;
-      variable15 = ((genericity___MMLocalProperty___signature_t)CALL( variable12 /*p*/,COLOR_static_type___MMLocalProperty___signature))( variable12 /*p*/) /*MMLocalProperty::signature*/;
-      variable15 = ((static_type___MMSignature___arity_t)CALL(variable15,COLOR_static_type___MMSignature___arity))(variable15) /*MMSignature::arity*/;
-      variable16 = NEW_range___Range___without_last( TAG_Int(0), variable15); /*new Range[Int]*/
-      variable15 = variable16;
-      variable15 = ((range___Range___iterator_t)CALL(variable15,COLOR_abstract_collection___Collection___iterator))(variable15) /*Range::iterator*/;
+      /* Register variable[15]: For 'is_ok' result */
+      variable[15] = CALL_abstract_collection___Iterator___is_ok(variable[14])(variable[14]) /*Iterator::is_ok*/;
+      if (!UNTAG_Bool(variable[15])) break; /*for*/
+      variable[15] = CALL_abstract_collection___Iterator___item(variable[14])(variable[14]) /*Iterator::item*/ /* Ensure var: For item*/;
+      /* Register variable[16]: Local variable */
+      variable[16] = variable[15];
+      /* Register variable[17]: Local variable */
+      /* Register variable[18]: Result */
+      variable[18] = CALL_abstractmetamodel___MMLocalClass_____bra(variable[0])(variable[0],  variable[16] /*g*/) /*MMLocalClass::[]*/;
+      variable[17] = variable[18];
+      /* Register variable[18]: Local variable */
+      /* Register variable[19]: Result */
+      variable[19] = CALL_static_type___MMLocalProperty___signature( variable[17] /*p*/)( variable[17] /*p*/) /*MMLocalProperty::signature*/;
+      /* Register variable[19]: Result */
+      variable[19] = CALL_static_type___MMSignature___return_type(variable[19])(variable[19]) /*MMSignature::return_type*/;
+      variable[18] = variable[19];
+      /* Register variable[19]: Result */
+      variable[19] = TAG_Bool(( variable[17] /*p*/==NIT_NULL) || VAL_ISA( variable[17] /*p*/, COLOR_MMAttribute, ID_MMAttribute)) /*cast MMAttribute*/;
+      /* Ensure var variable[19]: Left 'and' operand*/
+      if (UNTAG_Bool(variable[19])) { /* and */
+        /* Register variable[19]: Result */
+        variable[19] = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable[18] /*t*/ ==  NIT_NULL /*null*/) || (( variable[18] /*t*/ != NIT_NULL) && ((CALL_kernel___Object_____eqeq( variable[18] /*t*/)==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable[18] /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(CALL_kernel___Object_____eqeq( variable[18] /*t*/)( variable[18] /*t*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+      }
+      /* Register variable[19]: Result */
+      /* Ensure var variable[19]: Left 'and' operand*/
+      if (UNTAG_Bool(variable[19])) { /* and */
+        /* Register variable[19]: Result */
+        variable[19] = CALL_static_type___MMType___is_nullable( variable[18] /*t*/)( variable[18] /*t*/) /*MMType::is_nullable*/;
+        variable[19] =  TAG_Bool(!UNTAG_Bool(variable[19]));
+      }
+      /* Register variable[19]: Result */
+      /* Ensure var variable[19]: Left 'and' operand*/
+      if (UNTAG_Bool(variable[19])) { /* and */
+        /* Register variable[19]: Result */
+        variable[19] = CALL_compiling_base___CompilerVisitor___tc( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::tc*/;
+        /* Register variable[19]: Result */
+        variable[19] = CALL_mmloader___ToolContext___opt_warn(variable[19])(variable[19]) /*ToolContext::opt_warn*/;
+        /* Register variable[19]: Result */
+        variable[19] = CALL_opts___Option___value(variable[19])(variable[19]) /*Option::value*/;
+        /* Register variable[19]: Result */
+        variable[19] = TAG_Bool(UNTAG_Int(variable[19])>UNTAG_Int( TAG_Int(0)));
+      }
+      /* Register variable[19]: Result */
+      if (UNTAG_Bool(variable[19])) { /*if*/
+        variable[19] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+        /* Register variable[20]: Once String constant */
+        if (once_value_225 != NIT_NULL) variable[20] = once_value_225;
+        else {
+          variable[20] = NEW_String_string___String___with_native(BOX_NativeString("if ("), TAG_Int(4)) /*new String*/;
+          once_value_225 = variable[20];
+        }
+        /* Register variable[20]: Result */
+        /* Ensure var variable[20]: super-string element*/
+        CALL_abstract_collection___SimpleCollection___add(variable[19])(variable[19], variable[20]) /*AbstractArray::add*/;
+        /* Register variable[20]: Result */
+        variable[20] = CALL_abstractmetamodel___MMLocalProperty___global( variable[17] /*p*/)( variable[17] /*p*/) /*MMLocalProperty::global*/;
+        /* Register variable[20]: Result */
+        variable[20] = CALL_compiling_base___MMGlobalProperty___attr_access(variable[20])(variable[20]) /*MMGlobalProperty::attr_access*/;
+        /* Ensure var variable[20]: super-string element*/
+        CALL_abstract_collection___SimpleCollection___add(variable[19])(variable[19], variable[20]) /*AbstractArray::add*/;
+        /* Register variable[20]: Once String constant */
+        if (once_value_226 != NIT_NULL) variable[20] = once_value_226;
+        else {
+          variable[20] = NEW_String_string___String___with_native(BOX_NativeString("(self) == NIT_NULL) fprintf(stderr, \"Uninitialized attribute %s at %s.\\n\", \""), TAG_Int(76)) /*new String*/;
+          once_value_226 = variable[20];
+        }
+        /* Register variable[20]: Result */
+        /* Ensure var variable[20]: super-string element*/
+        CALL_abstract_collection___SimpleCollection___add(variable[19])(variable[19], variable[20]) /*AbstractArray::add*/;
+        /* Register variable[20]: Result */
+        variable[20] = CALL_abstractmetamodel___MMLocalProperty___full_name( variable[17] /*p*/)( variable[17] /*p*/) /*MMLocalProperty::full_name*/;
+        /* Ensure var variable[20]: super-string element*/
+        CALL_abstract_collection___SimpleCollection___add(variable[19])(variable[19], variable[20]) /*AbstractArray::add*/;
+        /* Register variable[20]: Once String constant */
+        if (once_value_227 != NIT_NULL) variable[20] = once_value_227;
+        else {
+          variable[20] = NEW_String_string___String___with_native(BOX_NativeString("\", from);"), TAG_Int(9)) /*new String*/;
+          once_value_227 = variable[20];
+        }
+        /* Register variable[20]: Result */
+        /* Ensure var variable[20]: super-string element*/
+        CALL_abstract_collection___SimpleCollection___add(variable[19])(variable[19], variable[20]) /*AbstractArray::add*/;
+        /* Register variable[19]: Result */
+        variable[19] = CALL_string___Object___to_s(variable[19])(variable[19]) /*Object::to_s*/;
+        CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[19]) /*CompilerVisitor::add_instr*/;
+      }
+      continue_224: while(0);
+      CALL_abstract_collection___Iterator___next(variable[14])(variable[14]) /*Iterator::next*/;
+    }
+    break_224: while(0);
+    /* Register variable[14]: Result */
+    variable[14] = CALL_compiling_base___CompilerVisitor___ctx( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::ctx*/;
+    CALL_compiling_base___CContext___append( variable[13] /*ctx_old*/)( variable[13] /*ctx_old*/, variable[14]) /*CContext::append*/;
+    CALL_compiling_base___CompilerVisitor___ctx__eq( variable[1] /*v*/)( variable[1] /*v*/,  variable[13] /*ctx_old*/) /*CompilerVisitor::ctx=*/;
+    CALL_compiling_base___CompilerVisitor___unindent( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::unindent*/;
+    /* Register variable[14]: Once String constant */
+    if (once_value_228 != NIT_NULL) variable[14] = once_value_228;
+    else {
+      variable[14] = NEW_String_string___String___with_native(BOX_NativeString("}"), TAG_Int(1)) /*new String*/;
+      once_value_228 = variable[14];
+    }
+    /* Register variable[14]: Result */
+    CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[14]) /*CompilerVisitor::add_instr*/;
+    /* Register variable[14]: Local variable */
+    /* Register variable[15]: Result */
+    variable[15] = CALL_abstractmetamodel___MMLocalClass___cshe(variable[0])(variable[0]) /*MMLocalClass::cshe*/;
+    /* Register variable[15]: Result */
+    variable[15] = CALL_partial_order___PartialOrderElement___greaters(variable[15])(variable[15]) /*PartialOrderElement::greaters*/;
+    /* Register variable[15]: Result */
+    variable[15] = CALL_abstract_collection___Collection___length(variable[15])(variable[15]) /*Collection::length*/;
+    /* Register variable[15]: Result */
+    variable[15] = TAG_Int(UNTAG_Int(variable[15])+UNTAG_Int( TAG_Int(1)));
+    variable[14] = variable[15];
+    /* Register variable[15]: Local variable */
+    variable[16] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+    /* Register variable[17]: Once String constant */
+    if (once_value_229 != NIT_NULL) variable[17] = once_value_229;
+    else {
+      variable[17] = NEW_String_string___String___with_native(BOX_NativeString("int init_table["), TAG_Int(15)) /*new String*/;
+      once_value_229 = variable[17];
+    }
+    /* Register variable[17]: Result */
+    /* Ensure var variable[17]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[16])(variable[16], variable[17]) /*AbstractArray::add*/;
+    variable[17] =  variable[14] /*init_table_size*/ /* Ensure var: super-string element*/;
+    CALL_abstract_collection___SimpleCollection___add(variable[16])(variable[16], CALL_string___Object___to_s(variable[17])(variable[17]) /*Object::to_s*/) /*AbstractArray::add*/;
+    /* Register variable[17]: Once String constant */
+    if (once_value_230 != NIT_NULL) variable[17] = once_value_230;
+    else {
+      variable[17] = NEW_String_string___String___with_native(BOX_NativeString("] = {0"), TAG_Int(6)) /*new String*/;
+      once_value_230 = variable[17];
+    }
+    /* Register variable[17]: Result */
+    /* Ensure var variable[17]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[16])(variable[16], variable[17]) /*AbstractArray::add*/;
+    /* Register variable[17]: Once String constant */
+    if (once_value_231 != NIT_NULL) variable[17] = once_value_231;
+    else {
+      variable[17] = NEW_String_string___String___with_native(BOX_NativeString(", 0"), TAG_Int(3)) /*new String*/;
+      once_value_231 = variable[17];
+    }
+    /* Register variable[17]: Result */
+    /* Register variable[18]: Result */
+    variable[18] = TAG_Int(UNTAG_Int( variable[14] /*init_table_size*/)-UNTAG_Int( TAG_Int(1)));
+    /* Register variable[17]: Result */
+    variable[17] = CALL_string___String_____star(variable[17])(variable[17], variable[18]) /*String::**/;
+    /* Ensure var variable[17]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[16])(variable[16], variable[17]) /*AbstractArray::add*/;
+    /* Register variable[17]: Once String constant */
+    if (once_value_232 != NIT_NULL) variable[17] = once_value_232;
+    else {
+      variable[17] = NEW_String_string___String___with_native(BOX_NativeString("};"), TAG_Int(2)) /*new String*/;
+      once_value_232 = variable[17];
+    }
+    /* Register variable[17]: Result */
+    /* Ensure var variable[17]: super-string element*/
+    CALL_abstract_collection___SimpleCollection___add(variable[16])(variable[16], variable[17]) /*AbstractArray::add*/;
+    /* Register variable[16]: Result */
+    variable[16] = CALL_string___Object___to_s(variable[16])(variable[16]) /*Object::to_s*/;
+    variable[15] = variable[16];
+    /* Register variable[16]: Result */
+    variable[16] = CALL_abstractmetamodel___MMLocalClass___global_properties(variable[0])(variable[0]) /*MMLocalClass::global_properties*/;
+    /* Register variable[16]: For iterator */
+    variable[16] = CALL_abstract_collection___Collection___iterator(variable[16])(variable[16]) /*Collection::iterator*/;
+    while (true) { /*for*/
+      /* Register variable[17]: For 'is_ok' result */
+      variable[17] = CALL_abstract_collection___Iterator___is_ok(variable[16])(variable[16]) /*Iterator::is_ok*/;
+      if (!UNTAG_Bool(variable[17])) break; /*for*/
+      variable[17] = CALL_abstract_collection___Iterator___item(variable[16])(variable[16]) /*Iterator::item*/ /* Ensure var: For item*/;
+      /* Register variable[18]: Local variable */
+      variable[18] = variable[17];
+      /* Register variable[19]: Local variable */
+      /* Register variable[20]: Result */
+      variable[20] = CALL_abstractmetamodel___MMLocalClass_____bra(variable[0])(variable[0],  variable[18] /*g*/) /*MMLocalClass::[]*/;
+      variable[19] = variable[20];
+      /* Register variable[20]: Result */
+      variable[20] = CALL_abstractmetamodel___MMLocalProperty___global( variable[19] /*p*/)( variable[19] /*p*/) /*MMLocalProperty::global*/;
+      /* Register variable[20]: Result */
+      variable[20] = CALL_abstractmetamodel___MMGlobalProperty___is_init_for(variable[20])(variable[20], variable[0]) /*MMGlobalProperty::is_init_for*/;
+      if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[20])))) { /*if*/
+        goto continue_233;
+      }
+      /* Register variable[20]: Local variable */
+      /* Register variable[21]: Result */
+      variable[21] = NEW_Array_array___Array___init() /*new Array[String]*/;
+      variable[20] = variable[21];
+      /* Register variable[21]: Local variable */
+      variable[22] = NEW_Array_array___Array___with_capacity(TAG_Int(1)) /*new Array[String]*/ /* Ensure var: Literal array*/;
+      /* Register variable[23]: Once String constant */
+      if (once_value_234 != NIT_NULL) variable[23] = once_value_234;
+      else {
+        variable[23] = NEW_String_string___String___with_native(BOX_NativeString("self"), TAG_Int(4)) /*new String*/;
+        once_value_234 = variable[23];
+      }
+      /* Register variable[23]: Result */
+      CALL_abstract_collection___SimpleCollection___add(variable[22])(variable[22], variable[23]) /*AbstractArray::add*/;
+      /* Register variable[22]: Result */
+      variable[21] = variable[22];
+      /* Register variable[22]: Result */
+      variable[22] = CALL_static_type___MMLocalProperty___signature( variable[19] /*p*/)( variable[19] /*p*/) /*MMLocalProperty::signature*/;
+      /* Register variable[22]: Result */
+      variable[22] = CALL_static_type___MMSignature___arity(variable[22])(variable[22]) /*MMSignature::arity*/;
+      /* Register variable[22]: Result */
+      variable[22] = NEW_Range_range___Range___without_last( TAG_Int(0), variable[22]) /*new Range[Int]*/;
+      /* Register variable[22]: For iterator */
+      variable[22] = CALL_abstract_collection___Collection___iterator(variable[22])(variable[22]) /*Range::iterator*/;
       while (true) { /*for*/
-        variable16 = ((abstract_collection___Iterator___is_ok_t)CALL(variable15,COLOR_abstract_collection___Iterator___is_ok))(variable15) /*Iterator::is_ok*/;
-        if (!UNTAG_Bool(variable16)) break; /*for*/
-        variable16 = ((abstract_collection___Iterator___item_t)CALL(variable15,COLOR_abstract_collection___Iterator___item))(variable15) /*Iterator::item*/;
-        variable17 = NEW_string___String___init(); /*new String*/
-        variable18 = NEW_string___String___with_native(BOX_NativeString("val_t p"), TAG_Int(7)); /*new String*/
-        variable19 = variable18;
-        ((string___String___append_t)CALL(variable17,COLOR_abstract_collection___IndexedCollection___append))(variable17, variable19) /*String::append*/;
-        variable20 =  variable16 /*i*/;
-        variable20 = ((string___String___to_s_t)CALL(variable20,COLOR_string___Object___to_s))(variable20) /*String::to_s*/;
-        ((string___String___append_t)CALL(variable17,COLOR_abstract_collection___IndexedCollection___append))(variable17, variable20) /*String::append*/;
-        variable21 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-        variable22 = variable21;
-        ((string___String___append_t)CALL(variable17,COLOR_abstract_collection___IndexedCollection___append))(variable17, variable22) /*String::append*/;
-        ((array___AbstractArray___add_t)CALL( variable13 /*params*/,COLOR_abstract_collection___SimpleCollection___add))( variable13 /*params*/, variable17) /*Array::add*/;
-        variable17 = NEW_string___String___init(); /*new String*/
-        variable18 = NEW_string___String___with_native(BOX_NativeString("p"), TAG_Int(1)); /*new String*/
-        variable19 = variable18;
-        ((string___String___append_t)CALL(variable17,COLOR_abstract_collection___IndexedCollection___append))(variable17, variable19) /*String::append*/;
-        variable20 =  variable16 /*i*/;
-        variable20 = ((string___String___to_s_t)CALL(variable20,COLOR_string___Object___to_s))(variable20) /*String::to_s*/;
-        ((string___String___append_t)CALL(variable17,COLOR_abstract_collection___IndexedCollection___append))(variable17, variable20) /*String::append*/;
-        variable21 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-        variable22 = variable21;
-        ((string___String___append_t)CALL(variable17,COLOR_abstract_collection___IndexedCollection___append))(variable17, variable22) /*String::append*/;
-        ((array___AbstractArray___add_t)CALL( variable14 /*args*/,COLOR_abstract_collection___SimpleCollection___add))( variable14 /*args*/, variable17) /*Array::add*/;
-        continue_106: while(0);
-        ((abstract_collection___Iterator___next_t)CALL(variable15,COLOR_abstract_collection___Iterator___next))(variable15) /*Iterator::next*/;
-      }
-      break_106: while(0);
-      variable15 = NEW_string___String___with_native(BOX_NativeString("init_table"), TAG_Int(10)); /*new String*/
-      ((array___AbstractArray___add_t)CALL( variable14 /*args*/,COLOR_abstract_collection___SimpleCollection___add))( variable14 /*args*/, variable15) /*Array::add*/;
-      variable16 = NEW_string___String___init(); /*new String*/
-      variable17 = NEW_string___String___with_native(BOX_NativeString("val_t NEW_"), TAG_Int(10)); /*new String*/
-      variable18 = variable17;
-      ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable18) /*String::append*/;
-      variable19 = ((abstractmetamodel___MMLocalProperty___global_t)CALL( variable12 /*p*/,COLOR_abstractmetamodel___MMLocalProperty___global))( variable12 /*p*/) /*MMLocalProperty::global*/;
-      variable19 = ((abstractmetamodel___MMGlobalProperty___intro_t)CALL(variable19,COLOR_abstractmetamodel___MMGlobalProperty___intro))(variable19) /*MMGlobalProperty::intro*/;
-      variable19 = ((compiling_base___MMLocalProperty___cname_t)CALL(variable19,COLOR_compiling_base___MMLocalProperty___cname))(variable19) /*MMConcreteProperty::cname*/;
-      variable20 = variable19;
-      ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable20) /*String::append*/;
-      variable21 = NEW_string___String___with_native(BOX_NativeString("("), TAG_Int(1)); /*new String*/
-      variable22 = variable21;
-      ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable22) /*String::append*/;
-      variable23 = NEW_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)); /*new String*/
-      variable23 = ((string___Collection___join_t)CALL( variable13 /*params*/,COLOR_string___Collection___join))( variable13 /*params*/, variable23) /*Array::join*/;
-      variable24 = variable23;
-      ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable24) /*String::append*/;
-      variable25 = NEW_string___String___with_native(BOX_NativeString(")"), TAG_Int(1)); /*new String*/
-      variable26 = variable25;
-      ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable26) /*String::append*/;
-      variable15 = variable16;
-      variable16 = NEW_string___String___with_native(BOX_NativeString(" {"), TAG_Int(2)); /*new String*/
-      variable16 = ((string___String_____plus_t)CALL( variable15 /*s*/,COLOR_string___String_____plus))( variable15 /*s*/, variable16) /*String::+*/;
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable16) /*CompilerVisitor::add_instr*/;
-      ((compiling_base___CompilerVisitor___indent_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___indent))( variable0 /*v*/) /*CompilerVisitor::indent*/;
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/,  variable9 /*init_table_decl*/) /*CompilerVisitor::add_instr*/;
-      variable16 = NEW_string___String___init(); /*new String*/
-      variable17 = NEW_string___String___with_native(BOX_NativeString("val_t self = NEW_"), TAG_Int(17)); /*new String*/
-      variable18 = variable17;
-      ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable18) /*String::append*/;
-      variable19 = ((abstractmetamodel___MMLocalClass___name_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___name))( self) /*MMLocalClass::name*/;
-      variable20 = variable19;
-      variable20 = ((string___String___to_s_t)CALL(variable20,COLOR_string___Object___to_s))(variable20) /*String::to_s*/;
-      ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable20) /*String::append*/;
-      variable21 = NEW_string___String___with_native(BOX_NativeString("();"), TAG_Int(3)); /*new String*/
-      variable22 = variable21;
-      ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable22) /*String::append*/;
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable16) /*CompilerVisitor::add_instr*/;
-      variable16 = NEW_string___String___init(); /*new String*/
-      variable17 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-      variable18 = variable17;
-      ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable18) /*String::append*/;
-      variable19 = ((abstractmetamodel___MMLocalProperty___concrete_property_t)CALL( variable12 /*p*/,COLOR_abstractmetamodel___MMLocalProperty___concrete_property))( variable12 /*p*/) /*MMLocalProperty::concrete_property*/;
-      variable19 = ((compiling_base___MMLocalProperty___cname_t)CALL(variable19,COLOR_compiling_base___MMLocalProperty___cname))(variable19) /*MMConcreteProperty::cname*/;
-      variable20 = variable19;
-      ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable20) /*String::append*/;
-      variable21 = NEW_string___String___with_native(BOX_NativeString("("), TAG_Int(1)); /*new String*/
-      variable22 = variable21;
-      ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable22) /*String::append*/;
-      variable23 = NEW_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)); /*new String*/
-      variable23 = ((string___Collection___join_t)CALL( variable14 /*args*/,COLOR_string___Collection___join))( variable14 /*args*/, variable23) /*Array::join*/;
-      variable24 = variable23;
-      ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable24) /*String::append*/;
-      variable25 = NEW_string___String___with_native(BOX_NativeString(");"), TAG_Int(2)); /*new String*/
-      variable26 = variable25;
-      ((string___String___append_t)CALL(variable16,COLOR_abstract_collection___IndexedCollection___append))(variable16, variable26) /*String::append*/;
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable16) /*CompilerVisitor::add_instr*/;
-      variable16 = NEW_string___String___with_native(BOX_NativeString("return self;"), TAG_Int(12)); /*new String*/
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable16) /*CompilerVisitor::add_instr*/;
-      ((compiling_base___CompilerVisitor___unindent_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___unindent))( variable0 /*v*/) /*CompilerVisitor::unindent*/;
-      variable16 = NEW_string___String___with_native(BOX_NativeString("}"), TAG_Int(1)); /*new String*/
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable16) /*CompilerVisitor::add_instr*/;
-      continue_105: while(0);
-      ((abstract_collection___Iterator___next_t)CALL(variable10,COLOR_abstract_collection___Iterator___next))(variable10) /*Iterator::next*/;
+        /* Register variable[23]: For 'is_ok' result */
+        variable[23] = CALL_abstract_collection___Iterator___is_ok(variable[22])(variable[22]) /*Iterator::is_ok*/;
+        if (!UNTAG_Bool(variable[23])) break; /*for*/
+        variable[23] = CALL_abstract_collection___Iterator___item(variable[22])(variable[22]) /*Iterator::item*/ /* Ensure var: For item*/;
+        /* Register variable[24]: Local variable */
+        variable[24] = variable[23];
+        variable[25] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+        /* Register variable[26]: Once String constant */
+        if (once_value_236 != NIT_NULL) variable[26] = once_value_236;
+        else {
+          variable[26] = NEW_String_string___String___with_native(BOX_NativeString("val_t p"), TAG_Int(7)) /*new String*/;
+          once_value_236 = variable[26];
+        }
+        /* Register variable[26]: Result */
+        /* Ensure var variable[26]: super-string element*/
+        CALL_abstract_collection___SimpleCollection___add(variable[25])(variable[25], variable[26]) /*AbstractArray::add*/;
+        variable[26] =  variable[24] /*i*/ /* Ensure var: super-string element*/;
+        CALL_abstract_collection___SimpleCollection___add(variable[25])(variable[25], CALL_string___Object___to_s(variable[26])(variable[26]) /*Object::to_s*/) /*AbstractArray::add*/;
+        /* Register variable[26]: Once String constant */
+        if (once_value_237 != NIT_NULL) variable[26] = once_value_237;
+        else {
+          variable[26] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+          once_value_237 = variable[26];
+        }
+        /* Register variable[26]: Result */
+        /* Ensure var variable[26]: super-string element*/
+        CALL_abstract_collection___SimpleCollection___add(variable[25])(variable[25], variable[26]) /*AbstractArray::add*/;
+        /* Register variable[25]: Result */
+        variable[25] = CALL_string___Object___to_s(variable[25])(variable[25]) /*Object::to_s*/;
+        CALL_abstract_collection___SimpleCollection___add( variable[20] /*params*/)( variable[20] /*params*/, variable[25]) /*AbstractArray::add*/;
+        variable[25] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+        /* Register variable[26]: Once String constant */
+        if (once_value_238 != NIT_NULL) variable[26] = once_value_238;
+        else {
+          variable[26] = NEW_String_string___String___with_native(BOX_NativeString("p"), TAG_Int(1)) /*new String*/;
+          once_value_238 = variable[26];
+        }
+        /* Register variable[26]: Result */
+        /* Ensure var variable[26]: super-string element*/
+        CALL_abstract_collection___SimpleCollection___add(variable[25])(variable[25], variable[26]) /*AbstractArray::add*/;
+        variable[26] =  variable[24] /*i*/ /* Ensure var: super-string element*/;
+        CALL_abstract_collection___SimpleCollection___add(variable[25])(variable[25], CALL_string___Object___to_s(variable[26])(variable[26]) /*Object::to_s*/) /*AbstractArray::add*/;
+        /* Register variable[26]: Once String constant */
+        if (once_value_239 != NIT_NULL) variable[26] = once_value_239;
+        else {
+          variable[26] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+          once_value_239 = variable[26];
+        }
+        /* Register variable[26]: Result */
+        /* Ensure var variable[26]: super-string element*/
+        CALL_abstract_collection___SimpleCollection___add(variable[25])(variable[25], variable[26]) /*AbstractArray::add*/;
+        /* Register variable[25]: Result */
+        variable[25] = CALL_string___Object___to_s(variable[25])(variable[25]) /*Object::to_s*/;
+        CALL_abstract_collection___SimpleCollection___add( variable[21] /*args*/)( variable[21] /*args*/, variable[25]) /*AbstractArray::add*/;
+        continue_235: while(0);
+        CALL_abstract_collection___Iterator___next(variable[22])(variable[22]) /*Iterator::next*/;
+      }
+      break_235: while(0);
+      /* Register variable[22]: Once String constant */
+      if (once_value_240 != NIT_NULL) variable[22] = once_value_240;
+      else {
+        variable[22] = NEW_String_string___String___with_native(BOX_NativeString("init_table"), TAG_Int(10)) /*new String*/;
+        once_value_240 = variable[22];
+      }
+      /* Register variable[22]: Result */
+      CALL_abstract_collection___SimpleCollection___add( variable[21] /*args*/)( variable[21] /*args*/, variable[22]) /*AbstractArray::add*/;
+      /* Register variable[22]: Local variable */
+      variable[23] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+      /* Register variable[24]: Once String constant */
+      if (once_value_241 != NIT_NULL) variable[24] = once_value_241;
+      else {
+        variable[24] = NEW_String_string___String___with_native(BOX_NativeString("val_t NEW_"), TAG_Int(10)) /*new String*/;
+        once_value_241 = variable[24];
+      }
+      /* Register variable[24]: Result */
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Ensure var variable[0]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], CALL_string___Object___to_s(variable[0])(variable[0]) /*Object::to_s*/) /*AbstractArray::add*/;
+      /* Register variable[24]: Once String constant */
+      if (once_value_242 != NIT_NULL) variable[24] = once_value_242;
+      else {
+        variable[24] = NEW_String_string___String___with_native(BOX_NativeString("_"), TAG_Int(1)) /*new String*/;
+        once_value_242 = variable[24];
+      }
+      /* Register variable[24]: Result */
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Register variable[24]: Result */
+      variable[24] = CALL_abstractmetamodel___MMLocalProperty___global( variable[19] /*p*/)( variable[19] /*p*/) /*MMLocalProperty::global*/;
+      /* Register variable[24]: Result */
+      variable[24] = CALL_abstractmetamodel___MMGlobalProperty___intro(variable[24])(variable[24]) /*MMGlobalProperty::intro*/;
+      /* Register variable[24]: Result */
+      variable[24] = CALL_compiling_base___MMLocalProperty___cname(variable[24])(variable[24]) /*MMLocalProperty::cname*/;
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Register variable[24]: Once String constant */
+      if (once_value_243 != NIT_NULL) variable[24] = once_value_243;
+      else {
+        variable[24] = NEW_String_string___String___with_native(BOX_NativeString("("), TAG_Int(1)) /*new String*/;
+        once_value_243 = variable[24];
+      }
+      /* Register variable[24]: Result */
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Register variable[24]: Once String constant */
+      if (once_value_244 != NIT_NULL) variable[24] = once_value_244;
+      else {
+        variable[24] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)) /*new String*/;
+        once_value_244 = variable[24];
+      }
+      /* Register variable[24]: Result */
+      /* Register variable[24]: Result */
+      variable[24] = CALL_string___Collection___join( variable[20] /*params*/)( variable[20] /*params*/, variable[24]) /*Collection::join*/;
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Register variable[24]: Once String constant */
+      if (once_value_245 != NIT_NULL) variable[24] = once_value_245;
+      else {
+        variable[24] = NEW_String_string___String___with_native(BOX_NativeString(") {"), TAG_Int(3)) /*new String*/;
+        once_value_245 = variable[24];
+      }
+      /* Register variable[24]: Result */
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Register variable[23]: Result */
+      variable[23] = CALL_string___Object___to_s(variable[23])(variable[23]) /*Object::to_s*/;
+      variable[22] = variable[23];
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/,  variable[22] /*s*/) /*CompilerVisitor::add_instr*/;
+      CALL_compiling_base___CompilerVisitor___indent( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::indent*/;
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/,  variable[15] /*init_table_decl*/) /*CompilerVisitor::add_instr*/;
+      variable[23] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+      /* Register variable[24]: Once String constant */
+      if (once_value_246 != NIT_NULL) variable[24] = once_value_246;
+      else {
+        variable[24] = NEW_String_string___String___with_native(BOX_NativeString("val_t self = NEW_"), TAG_Int(17)) /*new String*/;
+        once_value_246 = variable[24];
+      }
+      /* Register variable[24]: Result */
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Register variable[24]: Result */
+      variable[24] = CALL_abstractmetamodel___MMLocalClass___name(variable[0])(variable[0]) /*MMLocalClass::name*/;
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], CALL_string___Object___to_s(variable[24])(variable[24]) /*Object::to_s*/) /*AbstractArray::add*/;
+      /* Register variable[24]: Once String constant */
+      if (once_value_247 != NIT_NULL) variable[24] = once_value_247;
+      else {
+        variable[24] = NEW_String_string___String___with_native(BOX_NativeString("();"), TAG_Int(3)) /*new String*/;
+        once_value_247 = variable[24];
+      }
+      /* Register variable[24]: Result */
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Register variable[23]: Result */
+      variable[23] = CALL_string___Object___to_s(variable[23])(variable[23]) /*Object::to_s*/;
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[23]) /*CompilerVisitor::add_instr*/;
+      variable[23] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+      /* Register variable[24]: Once String constant */
+      if (once_value_248 != NIT_NULL) variable[24] = once_value_248;
+      else {
+        variable[24] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+        once_value_248 = variable[24];
+      }
+      /* Register variable[24]: Result */
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Register variable[24]: Result */
+      variable[24] = CALL_compiling_base___MMLocalProperty___cname( variable[19] /*p*/)( variable[19] /*p*/) /*MMLocalProperty::cname*/;
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Register variable[24]: Once String constant */
+      if (once_value_249 != NIT_NULL) variable[24] = once_value_249;
+      else {
+        variable[24] = NEW_String_string___String___with_native(BOX_NativeString("("), TAG_Int(1)) /*new String*/;
+        once_value_249 = variable[24];
+      }
+      /* Register variable[24]: Result */
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Register variable[24]: Once String constant */
+      if (once_value_250 != NIT_NULL) variable[24] = once_value_250;
+      else {
+        variable[24] = NEW_String_string___String___with_native(BOX_NativeString(", "), TAG_Int(2)) /*new String*/;
+        once_value_250 = variable[24];
+      }
+      /* Register variable[24]: Result */
+      /* Register variable[24]: Result */
+      variable[24] = CALL_string___Collection___join( variable[21] /*args*/)( variable[21] /*args*/, variable[24]) /*Collection::join*/;
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Register variable[24]: Once String constant */
+      if (once_value_251 != NIT_NULL) variable[24] = once_value_251;
+      else {
+        variable[24] = NEW_String_string___String___with_native(BOX_NativeString(");"), TAG_Int(2)) /*new String*/;
+        once_value_251 = variable[24];
+      }
+      /* Register variable[24]: Result */
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Register variable[23]: Result */
+      variable[23] = CALL_string___Object___to_s(variable[23])(variable[23]) /*Object::to_s*/;
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[23]) /*CompilerVisitor::add_instr*/;
+      variable[23] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+      /* Register variable[24]: Once String constant */
+      if (once_value_252 != NIT_NULL) variable[24] = once_value_252;
+      else {
+        variable[24] = NEW_String_string___String___with_native(BOX_NativeString("CHECKNEW_"), TAG_Int(9)) /*new String*/;
+        once_value_252 = variable[24];
+      }
+      /* Register variable[24]: Result */
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Register variable[24]: Result */
+      variable[24] = CALL_abstractmetamodel___MMLocalClass___name(variable[0])(variable[0]) /*MMLocalClass::name*/;
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], CALL_string___Object___to_s(variable[24])(variable[24]) /*Object::to_s*/) /*AbstractArray::add*/;
+      /* Register variable[24]: Once String constant */
+      if (once_value_253 != NIT_NULL) variable[24] = once_value_253;
+      else {
+        variable[24] = NEW_String_string___String___with_native(BOX_NativeString("(self, \""), TAG_Int(8)) /*new String*/;
+        once_value_253 = variable[24];
+      }
+      /* Register variable[24]: Result */
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Register variable[24]: Result */
+      variable[24] = CALL_abstractmetamodel___MMLocalProperty___full_name( variable[19] /*p*/)( variable[19] /*p*/) /*MMLocalProperty::full_name*/;
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Register variable[24]: Once String constant */
+      if (once_value_254 != NIT_NULL) variable[24] = once_value_254;
+      else {
+        variable[24] = NEW_String_string___String___with_native(BOX_NativeString(" for "), TAG_Int(5)) /*new String*/;
+        once_value_254 = variable[24];
+      }
+      /* Register variable[24]: Result */
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Ensure var variable[0]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], CALL_string___Object___to_s(variable[0])(variable[0]) /*Object::to_s*/) /*AbstractArray::add*/;
+      /* Register variable[24]: Once String constant */
+      if (once_value_255 != NIT_NULL) variable[24] = once_value_255;
+      else {
+        variable[24] = NEW_String_string___String___with_native(BOX_NativeString("\");"), TAG_Int(3)) /*new String*/;
+        once_value_255 = variable[24];
+      }
+      /* Register variable[24]: Result */
+      /* Ensure var variable[24]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[23])(variable[23], variable[24]) /*AbstractArray::add*/;
+      /* Register variable[23]: Result */
+      variable[23] = CALL_string___Object___to_s(variable[23])(variable[23]) /*Object::to_s*/;
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[23]) /*CompilerVisitor::add_instr*/;
+      /* Register variable[23]: Once String constant */
+      if (once_value_256 != NIT_NULL) variable[23] = once_value_256;
+      else {
+        variable[23] = NEW_String_string___String___with_native(BOX_NativeString("return self;"), TAG_Int(12)) /*new String*/;
+        once_value_256 = variable[23];
+      }
+      /* Register variable[23]: Result */
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[23]) /*CompilerVisitor::add_instr*/;
+      CALL_compiling_base___CompilerVisitor___unindent( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::unindent*/;
+      /* Register variable[23]: Once String constant */
+      if (once_value_257 != NIT_NULL) variable[23] = once_value_257;
+      else {
+        variable[23] = NEW_String_string___String___with_native(BOX_NativeString("}"), TAG_Int(1)) /*new String*/;
+        once_value_257 = variable[23];
+      }
+      /* Register variable[23]: Result */
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[23]) /*CompilerVisitor::add_instr*/;
+      continue_233: while(0);
+      CALL_abstract_collection___Iterator___next(variable[16])(variable[16]) /*Iterator::next*/;
     }
-    break_105: while(0);
+    break_233: while(0);
   } else { /*if*/
-    variable6 = ((compiling_base___PrimitiveInfo___tagged_t)CALL( variable5 /*pi*/,COLOR_compiling_base___PrimitiveInfo___tagged))( variable5 /*pi*/) /*PrimitiveInfo::tagged*/;
-    if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable6)))) { /*if*/
-      variable7 = ((compiling_base___PrimitiveInfo___cname_t)CALL( variable5 /*pi*/,COLOR_compiling_base___PrimitiveInfo___cname))( variable5 /*pi*/) /*PrimitiveInfo::cname*/;
-      variable6 = variable7;
-      variable8 = NEW_string___String___init(); /*new String*/
-      variable9 = NEW_string___String___with_native(BOX_NativeString("struct TBOX_"), TAG_Int(12)); /*new String*/
-      variable10 = variable9;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable10) /*String::append*/;
-      variable11 = ((abstractmetamodel___MMLocalClass___name_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___name))( self) /*MMLocalClass::name*/;
-      variable12 = variable11;
-      variable12 = ((string___String___to_s_t)CALL(variable12,COLOR_string___Object___to_s))(variable12) /*String::to_s*/;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable12) /*String::append*/;
-      variable13 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-      variable14 = variable13;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable14) /*String::append*/;
-      variable7 = variable8;
-      variable8 = NEW_string___String___init(); /*new String*/
-      variable9 = NEW_string___String___with_native(BOX_NativeString("val_t BOX_"), TAG_Int(10)); /*new String*/
-      variable10 = variable9;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable10) /*String::append*/;
-      variable11 = ((abstractmetamodel___MMLocalClass___name_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___name))( self) /*MMLocalClass::name*/;
-      variable12 = variable11;
-      variable12 = ((string___String___to_s_t)CALL(variable12,COLOR_string___Object___to_s))(variable12) /*String::to_s*/;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable12) /*String::append*/;
-      variable13 = NEW_string___String___with_native(BOX_NativeString("("), TAG_Int(1)); /*new String*/
-      variable14 = variable13;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable14) /*String::append*/;
-      variable15 =  variable6 /*t*/;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable15) /*String::append*/;
-      variable16 = NEW_string___String___with_native(BOX_NativeString(" val) {"), TAG_Int(7)); /*new String*/
-      variable17 = variable16;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable17) /*String::append*/;
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable8) /*CompilerVisitor::add_instr*/;
-      ((compiling_base___CompilerVisitor___indent_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___indent))( variable0 /*v*/) /*CompilerVisitor::indent*/;
-      variable8 = NEW_string___String___init(); /*new String*/
-      variable9 = NEW_string___String___with_native(BOX_NativeString(""), TAG_Int(0)); /*new String*/
-      variable10 = variable9;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable10) /*String::append*/;
-      variable11 =  variable7 /*tbox*/;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable11) /*String::append*/;
-      variable12 = NEW_string___String___with_native(BOX_NativeString(" *box = ("), TAG_Int(9)); /*new String*/
-      variable13 = variable12;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable13) /*String::append*/;
-      variable14 =  variable7 /*tbox*/;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable14) /*String::append*/;
-      variable15 = NEW_string___String___with_native(BOX_NativeString("*)alloc(sizeof("), TAG_Int(15)); /*new String*/
-      variable16 = variable15;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable16) /*String::append*/;
-      variable17 =  variable7 /*tbox*/;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable17) /*String::append*/;
-      variable18 = NEW_string___String___with_native(BOX_NativeString("));"), TAG_Int(3)); /*new String*/
-      variable19 = variable18;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable19) /*String::append*/;
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable8) /*CompilerVisitor::add_instr*/;
-      variable8 = NEW_string___String___init(); /*new String*/
-      variable9 = NEW_string___String___with_native(BOX_NativeString("box->vft = VFT_"), TAG_Int(15)); /*new String*/
-      variable10 = variable9;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable10) /*String::append*/;
-      variable11 = ((abstractmetamodel___MMLocalClass___name_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___name))( self) /*MMLocalClass::name*/;
-      variable12 = variable11;
-      variable12 = ((string___String___to_s_t)CALL(variable12,COLOR_string___Object___to_s))(variable12) /*String::to_s*/;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable12) /*String::append*/;
-      variable13 = NEW_string___String___with_native(BOX_NativeString(";"), TAG_Int(1)); /*new String*/
-      variable14 = variable13;
-      ((string___String___append_t)CALL(variable8,COLOR_abstract_collection___IndexedCollection___append))(variable8, variable14) /*String::append*/;
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable8) /*CompilerVisitor::add_instr*/;
-      variable8 = NEW_string___String___with_native(BOX_NativeString("box->val = val;"), TAG_Int(15)); /*new String*/
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable8) /*CompilerVisitor::add_instr*/;
-      variable8 = NEW_string___String___with_native(BOX_NativeString("return OBJ2VAL(box);"), TAG_Int(20)); /*new String*/
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable8) /*CompilerVisitor::add_instr*/;
-      ((compiling_base___CompilerVisitor___unindent_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___unindent))( variable0 /*v*/) /*CompilerVisitor::unindent*/;
-      variable8 = NEW_string___String___with_native(BOX_NativeString("}"), TAG_Int(1)); /*new String*/
-      ((compiling_base___CompilerVisitor___add_instr_t)CALL( variable0 /*v*/,COLOR_compiling_base___CompilerVisitor___add_instr))( variable0 /*v*/, variable8) /*CompilerVisitor::add_instr*/;
+    /* Register variable[8]: Result */
+    variable[8] = CALL_compiling_base___PrimitiveInfo___tagged( variable[7] /*pi*/)( variable[7] /*pi*/) /*PrimitiveInfo::tagged*/;
+    if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable[8])))) { /*if*/
+      /* Register variable[8]: Local variable */
+      /* Register variable[9]: Result */
+      variable[9] = CALL_compiling_base___PrimitiveInfo___cname( variable[7] /*pi*/)( variable[7] /*pi*/) /*PrimitiveInfo::cname*/;
+      variable[8] = variable[9];
+      /* Register variable[9]: Local variable */
+      variable[10] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+      /* Register variable[11]: Once String constant */
+      if (once_value_258 != NIT_NULL) variable[11] = once_value_258;
+      else {
+        variable[11] = NEW_String_string___String___with_native(BOX_NativeString("struct TBOX_"), TAG_Int(12)) /*new String*/;
+        once_value_258 = variable[11];
+      }
+      /* Register variable[11]: Result */
+      /* Ensure var variable[11]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
+      /* Register variable[11]: Result */
+      variable[11] = CALL_abstractmetamodel___MMLocalClass___name(variable[0])(variable[0]) /*MMLocalClass::name*/;
+      /* Ensure var variable[11]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], CALL_string___Object___to_s(variable[11])(variable[11]) /*Object::to_s*/) /*AbstractArray::add*/;
+      /* Register variable[11]: Once String constant */
+      if (once_value_259 != NIT_NULL) variable[11] = once_value_259;
+      else {
+        variable[11] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+        once_value_259 = variable[11];
+      }
+      /* Register variable[11]: Result */
+      /* Ensure var variable[11]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
+      /* Register variable[10]: Result */
+      variable[10] = CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/;
+      variable[9] = variable[10];
+      variable[10] = NEW_Array_array___Array___with_capacity(TAG_Int(5)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+      /* Register variable[11]: Once String constant */
+      if (once_value_260 != NIT_NULL) variable[11] = once_value_260;
+      else {
+        variable[11] = NEW_String_string___String___with_native(BOX_NativeString("val_t BOX_"), TAG_Int(10)) /*new String*/;
+        once_value_260 = variable[11];
+      }
+      /* Register variable[11]: Result */
+      /* Ensure var variable[11]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
+      /* Register variable[11]: Result */
+      variable[11] = CALL_abstractmetamodel___MMLocalClass___name(variable[0])(variable[0]) /*MMLocalClass::name*/;
+      /* Ensure var variable[11]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], CALL_string___Object___to_s(variable[11])(variable[11]) /*Object::to_s*/) /*AbstractArray::add*/;
+      /* Register variable[11]: Once String constant */
+      if (once_value_261 != NIT_NULL) variable[11] = once_value_261;
+      else {
+        variable[11] = NEW_String_string___String___with_native(BOX_NativeString("("), TAG_Int(1)) /*new String*/;
+        once_value_261 = variable[11];
+      }
+      /* Register variable[11]: Result */
+      /* Ensure var variable[11]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
+      variable[11] =  variable[8] /*t*/ /* Ensure var: super-string element*/;
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
+      /* Register variable[11]: Once String constant */
+      if (once_value_262 != NIT_NULL) variable[11] = once_value_262;
+      else {
+        variable[11] = NEW_String_string___String___with_native(BOX_NativeString(" val) {"), TAG_Int(7)) /*new String*/;
+        once_value_262 = variable[11];
+      }
+      /* Register variable[11]: Result */
+      /* Ensure var variable[11]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
+      /* Register variable[10]: Result */
+      variable[10] = CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/;
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[10]) /*CompilerVisitor::add_instr*/;
+      CALL_compiling_base___CompilerVisitor___indent( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::indent*/;
+      variable[10] = NEW_Array_array___Array___with_capacity(TAG_Int(7)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+      /* Register variable[11]: Once String constant */
+      if (once_value_263 != NIT_NULL) variable[11] = once_value_263;
+      else {
+        variable[11] = NEW_String_string___String___with_native(BOX_NativeString(""), TAG_Int(0)) /*new String*/;
+        once_value_263 = variable[11];
+      }
+      /* Register variable[11]: Result */
+      /* Ensure var variable[11]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
+      variable[11] =  variable[9] /*tbox*/ /* Ensure var: super-string element*/;
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
+      /* Register variable[11]: Once String constant */
+      if (once_value_264 != NIT_NULL) variable[11] = once_value_264;
+      else {
+        variable[11] = NEW_String_string___String___with_native(BOX_NativeString(" *box = ("), TAG_Int(9)) /*new String*/;
+        once_value_264 = variable[11];
+      }
+      /* Register variable[11]: Result */
+      /* Ensure var variable[11]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
+      variable[11] =  variable[9] /*tbox*/ /* Ensure var: super-string element*/;
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
+      /* Register variable[11]: Once String constant */
+      if (once_value_265 != NIT_NULL) variable[11] = once_value_265;
+      else {
+        variable[11] = NEW_String_string___String___with_native(BOX_NativeString("*)alloc(sizeof("), TAG_Int(15)) /*new String*/;
+        once_value_265 = variable[11];
+      }
+      /* Register variable[11]: Result */
+      /* Ensure var variable[11]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
+      variable[11] =  variable[9] /*tbox*/ /* Ensure var: super-string element*/;
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
+      /* Register variable[11]: Once String constant */
+      if (once_value_266 != NIT_NULL) variable[11] = once_value_266;
+      else {
+        variable[11] = NEW_String_string___String___with_native(BOX_NativeString("));"), TAG_Int(3)) /*new String*/;
+        once_value_266 = variable[11];
+      }
+      /* Register variable[11]: Result */
+      /* Ensure var variable[11]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
+      /* Register variable[10]: Result */
+      variable[10] = CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/;
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[10]) /*CompilerVisitor::add_instr*/;
+      variable[10] = NEW_Array_array___Array___with_capacity(TAG_Int(3)) /*new Array[String]*/ /* Ensure var: Array (for super-string)*/;
+      /* Register variable[11]: Once String constant */
+      if (once_value_267 != NIT_NULL) variable[11] = once_value_267;
+      else {
+        variable[11] = NEW_String_string___String___with_native(BOX_NativeString("box->vft = VFT_"), TAG_Int(15)) /*new String*/;
+        once_value_267 = variable[11];
+      }
+      /* Register variable[11]: Result */
+      /* Ensure var variable[11]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
+      /* Register variable[11]: Result */
+      variable[11] = CALL_abstractmetamodel___MMLocalClass___name(variable[0])(variable[0]) /*MMLocalClass::name*/;
+      /* Ensure var variable[11]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], CALL_string___Object___to_s(variable[11])(variable[11]) /*Object::to_s*/) /*AbstractArray::add*/;
+      /* Register variable[11]: Once String constant */
+      if (once_value_268 != NIT_NULL) variable[11] = once_value_268;
+      else {
+        variable[11] = NEW_String_string___String___with_native(BOX_NativeString(";"), TAG_Int(1)) /*new String*/;
+        once_value_268 = variable[11];
+      }
+      /* Register variable[11]: Result */
+      /* Ensure var variable[11]: super-string element*/
+      CALL_abstract_collection___SimpleCollection___add(variable[10])(variable[10], variable[11]) /*AbstractArray::add*/;
+      /* Register variable[10]: Result */
+      variable[10] = CALL_string___Object___to_s(variable[10])(variable[10]) /*Object::to_s*/;
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[10]) /*CompilerVisitor::add_instr*/;
+      /* Register variable[10]: Once String constant */
+      if (once_value_269 != NIT_NULL) variable[10] = once_value_269;
+      else {
+        variable[10] = NEW_String_string___String___with_native(BOX_NativeString("box->val = val;"), TAG_Int(15)) /*new String*/;
+        once_value_269 = variable[10];
+      }
+      /* Register variable[10]: Result */
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[10]) /*CompilerVisitor::add_instr*/;
+      /* Register variable[10]: Once String constant */
+      if (once_value_270 != NIT_NULL) variable[10] = once_value_270;
+      else {
+        variable[10] = NEW_String_string___String___with_native(BOX_NativeString("return OBJ2VAL(box);"), TAG_Int(20)) /*new String*/;
+        once_value_270 = variable[10];
+      }
+      /* Register variable[10]: Result */
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[10]) /*CompilerVisitor::add_instr*/;
+      CALL_compiling_base___CompilerVisitor___unindent( variable[1] /*v*/)( variable[1] /*v*/) /*CompilerVisitor::unindent*/;
+      /* Register variable[10]: Once String constant */
+      if (once_value_271 != NIT_NULL) variable[10] = once_value_271;
+      else {
+        variable[10] = NEW_String_string___String___with_native(BOX_NativeString("}"), TAG_Int(1)) /*new String*/;
+        once_value_271 = variable[10];
+      }
+      /* Register variable[10]: Result */
+      CALL_compiling_base___CompilerVisitor___add_instr( variable[1] /*v*/)( variable[1] /*v*/, variable[10]) /*CompilerVisitor::add_instr*/;
     }
   }
+  return_label194: while(false);
   tracehead = trace.prev;
   return;
 }