Update c_src
[nit.git] / c_src / syntax_base._sep.c
index c5ddb32..c0a7eb1 100644 (file)
@@ -1,19 +1,19 @@
 /* This C file is generated by NIT to compile module syntax_base. */
 #include "syntax_base._sep.h"
 val_t syntax_base___MMSrcModule___node(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___MMSrcModule___node, 26};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 26, LOCATE_syntax_base___MMSrcModule___node};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return ATTR_syntax_base___MMSrcModule____node( self) /*MMSrcModule::_node*/;
 }
 val_t syntax_base___MMSrcModule___src_local_classes(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___MMSrcModule___src_local_classes, 29};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 29, LOCATE_syntax_base___MMSrcModule___src_local_classes};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return ATTR_syntax_base___MMSrcModule____src_local_classes( self) /*MMSrcModule::_src_local_classes*/;
 }
 void syntax_base___MMSrcModule___init(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___MMSrcModule___init, 32};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 32, LOCATE_syntax_base___MMSrcModule___init};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27,14 +27,14 @@ void syntax_base___MMSrcModule___init(val_t  self, val_t  param0, val_t  param1,
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMSrcModule].i]) return;
   ((abstractmetamodel___MMModule___init_t)CALL( self,COLOR_abstractmetamodel___MMModule___init))( self,  variable3 /*name*/,  variable2 /*dir*/,  variable0 /*c*/, init_table /*YYY*/) /*MMModule::init*/;
   ATTR_syntax_base___MMSrcModule____node( self) /*MMSrcModule::_node*/ =  variable1 /*source*/;
-  variable4 = NEW_hash___HashMap___init(); /*new HashMap[Symbol, MMSrcLocalClass]*/
+  variable4 = NEW_hash___HashMap___init(); /*new HashMap[K, V]*/
   ATTR_syntax_base___MMSrcModule____src_local_classes( self) /*MMSrcModule::_src_local_classes*/ = variable4;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMSrcModule].i] = 1;
   tracehead = trace.prev;
   return;
 }
 val_t syntax_base___MMGlobalClass___check_visibility(val_t  self, val_t  param0, val_t  param1, val_t  param2) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___MMGlobalClass___check_visibility, 41};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 41, LOCATE_syntax_base___MMGlobalClass___check_visibility};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -57,8 +57,8 @@ val_t syntax_base___MMGlobalClass___check_visibility(val_t  self, val_t  param0,
   variable4 = ((abstractmetamodel___MMLocalClass___module_t)CALL(variable4,COLOR_abstractmetamodel___MMLocalClass___module))(variable4) /*MMLocalClass::module*/;
   variable3 = variable4;
   variable4 = TAG_Bool(( variable3 /*pm*/==NIT_NULL) || VAL_ISA( variable3 /*pm*/, COLOR_MMSrcModule, ID_MMSrcModule)) /*cast MMSrcModule*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_syntax_base___MMGlobalClass___check_visibility, 44); nit_exit(1);}
-  variable5 = ((abstractmetamodel___MMModule___visibility_for_t)CALL( variable2 /*cm*/,COLOR_abstractmetamodel___MMModule___visibility_for))( variable2 /*cm*/,  variable3 /*pm*/) /*MMSrcModule::visibility_for*/;
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_syntax_base___MMGlobalClass___check_visibility, LOCATE_syntax_base, 44); nit_exit(1);}
+  variable5 = ((abstractmetamodel___MMModule___visibility_for_t)CALL( variable2 /*cm*/,COLOR_abstractmetamodel___MMModule___visibility_for))( variable2 /*cm*/,  variable3 /*pm*/) /*MMModule::visibility_for*/;
   variable4 = variable5;
   variable5 = TAG_Bool(( variable4 /*vpm*/)==( TAG_Int(3)));
   if (UNTAG_Bool(variable5)) { /*if*/
@@ -113,32 +113,32 @@ val_t syntax_base___MMGlobalClass___check_visibility(val_t  self, val_t  param0,
   return variable3;
 }
 val_t syntax_base___MMSrcLocalClass___nodes(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___MMSrcLocalClass___nodes, 62};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 62, LOCATE_syntax_base___MMSrcLocalClass___nodes};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return ATTR_syntax_base___MMSrcLocalClass____nodes( self) /*MMSrcLocalClass::_nodes*/;
 }
 val_t syntax_base___MMSrcLocalClass___formal_dict(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___MMSrcLocalClass___formal_dict, 65};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 65, LOCATE_syntax_base___MMSrcLocalClass___formal_dict};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return ATTR_syntax_base___MMSrcLocalClass____formal_dict( self) /*MMSrcLocalClass::_formal_dict*/;
 }
 void syntax_base___MMSrcLocalClass___formal_dict__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___MMSrcLocalClass___formal_dict__eq, 65};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 65, LOCATE_syntax_base___MMSrcLocalClass___formal_dict__eq};
   trace.prev = tracehead; tracehead = &trace;
   ATTR_syntax_base___MMSrcLocalClass____formal_dict( self) /*MMSrcLocalClass::_formal_dict*/ =  param0;
   tracehead = trace.prev;
   return;
 }
 val_t syntax_base___MMSrcLocalClass___src_local_properties(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___MMSrcLocalClass___src_local_properties, 68};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 68, LOCATE_syntax_base___MMSrcLocalClass___src_local_properties};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return ATTR_syntax_base___MMSrcLocalClass____src_local_properties( self) /*MMSrcLocalClass::_src_local_properties*/;
 }
 void syntax_base___MMSrcLocalClass___init(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___MMSrcLocalClass___init, 71};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 71, LOCATE_syntax_base___MMSrcLocalClass___init};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -149,17 +149,17 @@ void syntax_base___MMSrcLocalClass___init(val_t  self, val_t  param0, val_t  par
   variable2 =  param2;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMSrcLocalClass].i]) return;
   ((abstractmetamodel___MMLocalClass___init_t)CALL( self,COLOR_abstractmetamodel___MMLocalClass___init))( self,  variable0 /*n*/,  variable2 /*a*/, init_table /*YYY*/) /*MMLocalClass::init*/;
-  variable3 = NEW_array___Array___with_capacity(TAG_Int(1)); /*new Array[PClassdef]*/
-  ((array___AbstractArray___add_t)CALL(variable3,COLOR_abstract_collection___SimpleCollection___add))(variable3,  variable1 /*cla*/) /*Array::add*/;
+  variable3 = NEW_array___Array___with_capacity(TAG_Int(1)); /*new Array[E]*/
+  ((array___AbstractArray___add_t)CALL(variable3,COLOR_abstract_collection___SimpleCollection___add))(variable3,  variable1 /*cla*/) /*AbstractArray::add*/;
   ATTR_syntax_base___MMSrcLocalClass____nodes( self) /*MMSrcLocalClass::_nodes*/ = variable3;
-  variable3 = NEW_hash___HashMap___init(); /*new HashMap[Symbol, MMSrcLocalProperty]*/
+  variable3 = NEW_hash___HashMap___init(); /*new HashMap[K, V]*/
   ATTR_syntax_base___MMSrcLocalClass____src_local_properties( self) /*MMSrcLocalClass::_src_local_properties*/ = variable3;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMSrcLocalClass].i] = 1;
   tracehead = trace.prev;
   return;
 }
 val_t syntax_base___MMGlobalProperty___check_visibility(val_t  self, val_t  param0, val_t  param1, val_t  param2, val_t  param3) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___MMGlobalProperty___check_visibility, 80};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 80, LOCATE_syntax_base___MMGlobalProperty___check_visibility};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -184,8 +184,8 @@ val_t syntax_base___MMGlobalProperty___check_visibility(val_t  self, val_t  para
   variable5 = ((abstractmetamodel___MMLocalClass___module_t)CALL(variable5,COLOR_abstractmetamodel___MMLocalClass___module))(variable5) /*MMLocalClass::module*/;
   variable4 = variable5;
   variable5 = TAG_Bool(( variable4 /*pm*/==NIT_NULL) || VAL_ISA( variable4 /*pm*/, COLOR_MMSrcModule, ID_MMSrcModule)) /*cast MMSrcModule*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_syntax_base___MMGlobalProperty___check_visibility, 83); nit_exit(1);}
-  variable6 = ((abstractmetamodel___MMModule___visibility_for_t)CALL( variable2 /*cm*/,COLOR_abstractmetamodel___MMModule___visibility_for))( variable2 /*cm*/,  variable4 /*pm*/) /*MMSrcModule::visibility_for*/;
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_syntax_base___MMGlobalProperty___check_visibility, LOCATE_syntax_base, 83); nit_exit(1);}
+  variable6 = ((abstractmetamodel___MMModule___visibility_for_t)CALL( variable2 /*cm*/,COLOR_abstractmetamodel___MMModule___visibility_for))( variable2 /*cm*/,  variable4 /*pm*/) /*MMModule::visibility_for*/;
   variable5 = variable6;
   variable6 = TAG_Bool(( variable5 /*vpm*/)==( TAG_Int(3)));
   if (UNTAG_Bool(variable6)) { /*if*/
@@ -262,14 +262,24 @@ val_t syntax_base___MMGlobalProperty___check_visibility(val_t  self, val_t  para
   tracehead = trace.prev;
   return variable4;
 }
-val_t syntax_base___MMSrcLocalProperty___node(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___MMSrcLocalProperty___node, 108};
+val_t syntax_base___MMLocalProperty___node(val_t  self) {
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 103, LOCATE_syntax_base___MMLocalProperty___node};
+  val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
+  variable0 =  NIT_NULL /*null*/;
+  goto return_label4;
+  return_label4: while(false);
   tracehead = trace.prev;
-  return ATTR_syntax_base___MMSrcLocalProperty____node( self) /*MMSrcLocalProperty::_node*/;
+  return variable0;
+}
+val_t syntax_base___MMSrcAttribute___node(val_t  self) {
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 111, LOCATE_syntax_base___MMSrcAttribute___node};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_syntax_base___MMSrcAttribute____node( self) /*MMSrcAttribute::_node*/;
 }
 void syntax_base___MMSrcAttribute___init(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___MMSrcAttribute___init, 116};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 112, LOCATE_syntax_base___MMSrcAttribute___init};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -278,14 +288,20 @@ void syntax_base___MMSrcAttribute___init(val_t  self, val_t  param0, val_t  para
   variable1 =  param1;
   variable2 =  param2;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMSrcAttribute].i]) return;
-  ((abstractmetamodel___MMLocalProperty___init_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___init))( self,  variable0 /*name*/,  variable1 /*cla*/,  self, init_table /*YYY*/) /*MMLocalProperty::init*/;
-  ATTR_syntax_base___MMSrcLocalProperty____node( self) /*MMSrcAttribute::_node*/ =  variable2 /*n*/;
+  ((abstractmetamodel___MMLocalProperty___init_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___init))( self,  variable0 /*name*/,  variable1 /*cla*/, init_table /*YYY*/) /*MMLocalProperty::init*/;
+  ATTR_syntax_base___MMSrcAttribute____node( self) /*MMSrcAttribute::_node*/ =  variable2 /*n*/;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMSrcAttribute].i] = 1;
   tracehead = trace.prev;
   return;
 }
+val_t syntax_base___MMAttrImplementationMethod___node(val_t  self) {
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 128, LOCATE_syntax_base___MMAttrImplementationMethod___node};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_syntax_base___MMAttrImplementationMethod____node( self) /*MMAttrImplementationMethod::_node*/;
+}
 void syntax_base___MMReadImplementationMethod___init(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___MMReadImplementationMethod___init, 139};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 135, LOCATE_syntax_base___MMReadImplementationMethod___init};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -294,14 +310,14 @@ void syntax_base___MMReadImplementationMethod___init(val_t  self, val_t  param0,
   variable1 =  param1;
   variable2 =  param2;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMReadImplementationMethod].i]) return;
-  ((abstractmetamodel___MMLocalProperty___init_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___init))( self,  variable0 /*name*/,  variable1 /*cla*/,  self, init_table /*YYY*/) /*MMLocalProperty::init*/;
-  ATTR_syntax_base___MMSrcLocalProperty____node( self) /*MMReadImplementationMethod::_node*/ =  variable2 /*n*/;
+  ((abstractmetamodel___MMLocalProperty___init_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___init))( self,  variable0 /*name*/,  variable1 /*cla*/, init_table /*YYY*/) /*MMLocalProperty::init*/;
+  ATTR_syntax_base___MMAttrImplementationMethod____node( self) /*MMAttrImplementationMethod::_node*/ =  variable2 /*n*/;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMReadImplementationMethod].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void syntax_base___MMWriteImplementationMethod___init(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___MMWriteImplementationMethod___init, 150};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 146, LOCATE_syntax_base___MMWriteImplementationMethod___init};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -310,14 +326,20 @@ void syntax_base___MMWriteImplementationMethod___init(val_t  self, val_t  param0
   variable1 =  param1;
   variable2 =  param2;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMWriteImplementationMethod].i]) return;
-  ((abstractmetamodel___MMLocalProperty___init_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___init))( self,  variable0 /*name*/,  variable1 /*cla*/,  self, init_table /*YYY*/) /*MMLocalProperty::init*/;
-  ATTR_syntax_base___MMSrcLocalProperty____node( self) /*MMWriteImplementationMethod::_node*/ =  variable2 /*n*/;
+  ((abstractmetamodel___MMLocalProperty___init_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___init))( self,  variable0 /*name*/,  variable1 /*cla*/, init_table /*YYY*/) /*MMLocalProperty::init*/;
+  ATTR_syntax_base___MMAttrImplementationMethod____node( self) /*MMAttrImplementationMethod::_node*/ =  variable2 /*n*/;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMWriteImplementationMethod].i] = 1;
   tracehead = trace.prev;
   return;
 }
+val_t syntax_base___MMMethSrcMethod___node(val_t  self) {
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 156, LOCATE_syntax_base___MMMethSrcMethod___node};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_syntax_base___MMMethSrcMethod____node( self) /*MMMethSrcMethod::_node*/;
+}
 void syntax_base___MMMethSrcMethod___init(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___MMMethSrcMethod___init, 162};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 157, LOCATE_syntax_base___MMMethSrcMethod___init};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -326,14 +348,20 @@ void syntax_base___MMMethSrcMethod___init(val_t  self, val_t  param0, val_t  par
   variable1 =  param1;
   variable2 =  param2;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMMethSrcMethod].i]) return;
-  ((abstractmetamodel___MMLocalProperty___init_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___init))( self,  variable0 /*name*/,  variable1 /*cla*/,  self, init_table /*YYY*/) /*MMLocalProperty::init*/;
-  ATTR_syntax_base___MMSrcLocalProperty____node( self) /*MMMethSrcMethod::_node*/ =  variable2 /*n*/;
+  ((abstractmetamodel___MMLocalProperty___init_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___init))( self,  variable0 /*name*/,  variable1 /*cla*/, init_table /*YYY*/) /*MMLocalProperty::init*/;
+  ATTR_syntax_base___MMMethSrcMethod____node( self) /*MMMethSrcMethod::_node*/ =  variable2 /*n*/;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMMethSrcMethod].i] = 1;
   tracehead = trace.prev;
   return;
 }
+val_t syntax_base___MMSrcTypeProperty___node(val_t  self) {
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 168, LOCATE_syntax_base___MMSrcTypeProperty___node};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_syntax_base___MMSrcTypeProperty____node( self) /*MMSrcTypeProperty::_node*/;
+}
 void syntax_base___MMSrcTypeProperty___init(val_t  self, val_t  param0, val_t  param1, val_t  param2, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___MMSrcTypeProperty___init, 173};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 169, LOCATE_syntax_base___MMSrcTypeProperty___init};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -342,39 +370,50 @@ void syntax_base___MMSrcTypeProperty___init(val_t  self, val_t  param0, val_t  p
   variable1 =  param1;
   variable2 =  param2;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMSrcTypeProperty].i]) return;
-  ((abstractmetamodel___MMLocalProperty___init_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___init))( self,  variable0 /*name*/,  variable1 /*cla*/,  self, init_table /*YYY*/) /*MMLocalProperty::init*/;
-  ATTR_syntax_base___MMSrcLocalProperty____node( self) /*MMSrcTypeProperty::_node*/ =  variable2 /*n*/;
+  ((abstractmetamodel___MMLocalProperty___init_t)CALL( self,COLOR_abstractmetamodel___MMLocalProperty___init))( self,  variable0 /*name*/,  variable1 /*cla*/, init_table /*YYY*/) /*MMLocalProperty::init*/;
+  ATTR_syntax_base___MMSrcTypeProperty____node( self) /*MMSrcTypeProperty::_node*/ =  variable2 /*n*/;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_MMSrcTypeProperty].i] = 1;
   tracehead = trace.prev;
   return;
 }
 val_t syntax_base___Variable___name(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___Variable___name, 183};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 179, LOCATE_syntax_base___Variable___name};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return ATTR_syntax_base___Variable____name( self) /*Variable::_name*/;
 }
 val_t syntax_base___Variable___decl(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___Variable___decl, 186};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 182, LOCATE_syntax_base___Variable___decl};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return ATTR_syntax_base___Variable____decl( self) /*Variable::_decl*/;
 }
 val_t syntax_base___Variable___stype(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___Variable___stype, 189};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 185, LOCATE_syntax_base___Variable___stype};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return ATTR_syntax_base___Variable____stype( self) /*Variable::_stype*/;
 }
 void syntax_base___Variable___stype__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___Variable___stype__eq, 189};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 185, LOCATE_syntax_base___Variable___stype__eq};
   trace.prev = tracehead; tracehead = &trace;
   ATTR_syntax_base___Variable____stype( self) /*Variable::_stype*/ =  param0;
   tracehead = trace.prev;
   return;
 }
+val_t syntax_base___Variable___to_s(val_t  self) {
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 188, LOCATE_syntax_base___Variable___to_s};
+  val_t variable0;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_syntax_base___Variable____name( self) /*Variable::_name*/;
+  variable0 = ((symbol___Symbol___to_s_t)CALL(variable0,COLOR_string___Object___to_s))(variable0) /*Symbol::to_s*/;
+  goto return_label10;
+  return_label10: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
 void syntax_base___Variable___init(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___Variable___init, 192};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 190, LOCATE_syntax_base___Variable___init};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -382,10 +421,10 @@ void syntax_base___Variable___init(val_t  self, val_t  param0, val_t  param1, in
   variable0 =  param0;
   variable1 =  param1;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Variable].i]) return;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Symbol::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_syntax_base___Variable___init, 194); nit_exit(1);}
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*d*/ ==  NIT_NULL /*null*/) || (( variable1 /*d*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*d*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*d*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*d*/,COLOR_kernel___Object_____eqeq))( variable1 /*d*/,  NIT_NULL /*null*/) /*PNode::==*/)))))));
-  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_syntax_base___Variable___init, 195); nit_exit(1);}
+  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable0 /*n*/ ==  NIT_NULL /*null*/) || (( variable0 /*n*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*n*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*n*/,COLOR_kernel___Object_____eqeq))( variable0 /*n*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_syntax_base___Variable___init, LOCATE_syntax_base, 192); nit_exit(1);}
+  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*d*/ ==  NIT_NULL /*null*/) || (( variable1 /*d*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*d*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*d*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*d*/,COLOR_kernel___Object_____eqeq))( variable1 /*d*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (!UNTAG_Bool(variable2)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_syntax_base___Variable___init, LOCATE_syntax_base, 193); nit_exit(1);}
   ATTR_syntax_base___Variable____name( self) /*Variable::_name*/ =  variable0 /*n*/;
   ATTR_syntax_base___Variable____decl( self) /*Variable::_decl*/ =  variable1 /*d*/;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Variable].i] = 1;
@@ -393,28 +432,7 @@ void syntax_base___Variable___init(val_t  self, val_t  param0, val_t  param1, in
   return;
 }
 val_t syntax_base___AbsSyntaxVisitor___type_bool(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___type_bool, 206};
-  val_t variable0;
-  val_t variable1;
-  static val_t once_value_variable1_11; static int once_bool_variable1_11;
-  trace.prev = tracehead; tracehead = &trace;
-  variable0 = ATTR_syntax_base___AbsSyntaxVisitor____module( self) /*AbsSyntaxVisitor::_module*/;
-  if (once_bool_variable1_11) variable1 = once_value_variable1_11;
-  else {
-    variable1 = NEW_string___String___with_native(BOX_NativeString("Bool"), TAG_Int(4)); /*new String*/
-    variable1 = ((symbol___String___to_symbol_t)CALL(variable1,COLOR_symbol___String___to_symbol))(variable1) /*String::to_symbol*/;
-    once_value_variable1_11 = variable1;
-    once_bool_variable1_11 = true;
-  }
-  variable0 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable0,COLOR_abstractmetamodel___MMModule___class_by_name))(variable0, variable1) /*MMSrcModule::class_by_name*/;
-  variable0 = ((genericity___MMLocalClass___get_type_t)CALL(variable0,COLOR_static_type___MMLocalClass___get_type))(variable0) /*MMLocalClass::get_type*/;
-  goto return_label10;
-  return_label10: while(false);
-  tracehead = trace.prev;
-  return variable0;
-}
-val_t syntax_base___AbsSyntaxVisitor___type_int(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___type_int, 212};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 204, LOCATE_syntax_base___AbsSyntaxVisitor___type_bool};
   val_t variable0;
   val_t variable1;
   static val_t once_value_variable1_13; static int once_bool_variable1_13;
@@ -422,20 +440,20 @@ val_t syntax_base___AbsSyntaxVisitor___type_int(val_t  self) {
   variable0 = ATTR_syntax_base___AbsSyntaxVisitor____module( self) /*AbsSyntaxVisitor::_module*/;
   if (once_bool_variable1_13) variable1 = once_value_variable1_13;
   else {
-    variable1 = NEW_string___String___with_native(BOX_NativeString("Int"), TAG_Int(3)); /*new String*/
+    variable1 = NEW_string___String___with_native(BOX_NativeString("Bool"), TAG_Int(4)); /*new String*/
     variable1 = ((symbol___String___to_symbol_t)CALL(variable1,COLOR_symbol___String___to_symbol))(variable1) /*String::to_symbol*/;
     once_value_variable1_13 = variable1;
     once_bool_variable1_13 = true;
   }
-  variable0 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable0,COLOR_abstractmetamodel___MMModule___class_by_name))(variable0, variable1) /*MMSrcModule::class_by_name*/;
+  variable0 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable0,COLOR_abstractmetamodel___MMModule___class_by_name))(variable0, variable1) /*MMModule::class_by_name*/;
   variable0 = ((genericity___MMLocalClass___get_type_t)CALL(variable0,COLOR_static_type___MMLocalClass___get_type))(variable0) /*MMLocalClass::get_type*/;
   goto return_label12;
   return_label12: while(false);
   tracehead = trace.prev;
   return variable0;
 }
-val_t syntax_base___AbsSyntaxVisitor___type_float(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___type_float, 218};
+val_t syntax_base___AbsSyntaxVisitor___type_int(val_t  self) {
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 210, LOCATE_syntax_base___AbsSyntaxVisitor___type_int};
   val_t variable0;
   val_t variable1;
   static val_t once_value_variable1_15; static int once_bool_variable1_15;
@@ -443,20 +461,20 @@ val_t syntax_base___AbsSyntaxVisitor___type_float(val_t  self) {
   variable0 = ATTR_syntax_base___AbsSyntaxVisitor____module( self) /*AbsSyntaxVisitor::_module*/;
   if (once_bool_variable1_15) variable1 = once_value_variable1_15;
   else {
-    variable1 = NEW_string___String___with_native(BOX_NativeString("Float"), TAG_Int(5)); /*new String*/
+    variable1 = NEW_string___String___with_native(BOX_NativeString("Int"), TAG_Int(3)); /*new String*/
     variable1 = ((symbol___String___to_symbol_t)CALL(variable1,COLOR_symbol___String___to_symbol))(variable1) /*String::to_symbol*/;
     once_value_variable1_15 = variable1;
     once_bool_variable1_15 = true;
   }
-  variable0 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable0,COLOR_abstractmetamodel___MMModule___class_by_name))(variable0, variable1) /*MMSrcModule::class_by_name*/;
+  variable0 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable0,COLOR_abstractmetamodel___MMModule___class_by_name))(variable0, variable1) /*MMModule::class_by_name*/;
   variable0 = ((genericity___MMLocalClass___get_type_t)CALL(variable0,COLOR_static_type___MMLocalClass___get_type))(variable0) /*MMLocalClass::get_type*/;
   goto return_label14;
   return_label14: while(false);
   tracehead = trace.prev;
   return variable0;
 }
-val_t syntax_base___AbsSyntaxVisitor___type_char(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___type_char, 224};
+val_t syntax_base___AbsSyntaxVisitor___type_float(val_t  self) {
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 216, LOCATE_syntax_base___AbsSyntaxVisitor___type_float};
   val_t variable0;
   val_t variable1;
   static val_t once_value_variable1_17; static int once_bool_variable1_17;
@@ -464,20 +482,20 @@ val_t syntax_base___AbsSyntaxVisitor___type_char(val_t  self) {
   variable0 = ATTR_syntax_base___AbsSyntaxVisitor____module( self) /*AbsSyntaxVisitor::_module*/;
   if (once_bool_variable1_17) variable1 = once_value_variable1_17;
   else {
-    variable1 = NEW_string___String___with_native(BOX_NativeString("Char"), TAG_Int(4)); /*new String*/
+    variable1 = NEW_string___String___with_native(BOX_NativeString("Float"), TAG_Int(5)); /*new String*/
     variable1 = ((symbol___String___to_symbol_t)CALL(variable1,COLOR_symbol___String___to_symbol))(variable1) /*String::to_symbol*/;
     once_value_variable1_17 = variable1;
     once_bool_variable1_17 = true;
   }
-  variable0 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable0,COLOR_abstractmetamodel___MMModule___class_by_name))(variable0, variable1) /*MMSrcModule::class_by_name*/;
+  variable0 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable0,COLOR_abstractmetamodel___MMModule___class_by_name))(variable0, variable1) /*MMModule::class_by_name*/;
   variable0 = ((genericity___MMLocalClass___get_type_t)CALL(variable0,COLOR_static_type___MMLocalClass___get_type))(variable0) /*MMLocalClass::get_type*/;
   goto return_label16;
   return_label16: while(false);
   tracehead = trace.prev;
   return variable0;
 }
-val_t syntax_base___AbsSyntaxVisitor___type_string(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___type_string, 230};
+val_t syntax_base___AbsSyntaxVisitor___type_char(val_t  self) {
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 222, LOCATE_syntax_base___AbsSyntaxVisitor___type_char};
   val_t variable0;
   val_t variable1;
   static val_t once_value_variable1_19; static int once_bool_variable1_19;
@@ -485,20 +503,20 @@ val_t syntax_base___AbsSyntaxVisitor___type_string(val_t  self) {
   variable0 = ATTR_syntax_base___AbsSyntaxVisitor____module( self) /*AbsSyntaxVisitor::_module*/;
   if (once_bool_variable1_19) variable1 = once_value_variable1_19;
   else {
-    variable1 = NEW_string___String___with_native(BOX_NativeString("String"), TAG_Int(6)); /*new String*/
+    variable1 = NEW_string___String___with_native(BOX_NativeString("Char"), TAG_Int(4)); /*new String*/
     variable1 = ((symbol___String___to_symbol_t)CALL(variable1,COLOR_symbol___String___to_symbol))(variable1) /*String::to_symbol*/;
     once_value_variable1_19 = variable1;
     once_bool_variable1_19 = true;
   }
-  variable0 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable0,COLOR_abstractmetamodel___MMModule___class_by_name))(variable0, variable1) /*MMSrcModule::class_by_name*/;
+  variable0 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable0,COLOR_abstractmetamodel___MMModule___class_by_name))(variable0, variable1) /*MMModule::class_by_name*/;
   variable0 = ((genericity___MMLocalClass___get_type_t)CALL(variable0,COLOR_static_type___MMLocalClass___get_type))(variable0) /*MMLocalClass::get_type*/;
   goto return_label18;
   return_label18: while(false);
   tracehead = trace.prev;
   return variable0;
 }
-val_t syntax_base___AbsSyntaxVisitor___type_collection(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___type_collection, 236};
+val_t syntax_base___AbsSyntaxVisitor___type_string(val_t  self) {
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 228, LOCATE_syntax_base___AbsSyntaxVisitor___type_string};
   val_t variable0;
   val_t variable1;
   static val_t once_value_variable1_21; static int once_bool_variable1_21;
@@ -506,147 +524,168 @@ val_t syntax_base___AbsSyntaxVisitor___type_collection(val_t  self) {
   variable0 = ATTR_syntax_base___AbsSyntaxVisitor____module( self) /*AbsSyntaxVisitor::_module*/;
   if (once_bool_variable1_21) variable1 = once_value_variable1_21;
   else {
-    variable1 = NEW_string___String___with_native(BOX_NativeString("Collection"), TAG_Int(10)); /*new String*/
+    variable1 = NEW_string___String___with_native(BOX_NativeString("String"), TAG_Int(6)); /*new String*/
     variable1 = ((symbol___String___to_symbol_t)CALL(variable1,COLOR_symbol___String___to_symbol))(variable1) /*String::to_symbol*/;
     once_value_variable1_21 = variable1;
     once_bool_variable1_21 = true;
   }
-  variable0 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable0,COLOR_abstractmetamodel___MMModule___class_by_name))(variable0, variable1) /*MMSrcModule::class_by_name*/;
+  variable0 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable0,COLOR_abstractmetamodel___MMModule___class_by_name))(variable0, variable1) /*MMModule::class_by_name*/;
   variable0 = ((genericity___MMLocalClass___get_type_t)CALL(variable0,COLOR_static_type___MMLocalClass___get_type))(variable0) /*MMLocalClass::get_type*/;
   goto return_label20;
   return_label20: while(false);
   tracehead = trace.prev;
   return variable0;
 }
+val_t syntax_base___AbsSyntaxVisitor___type_collection(val_t  self) {
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 234, LOCATE_syntax_base___AbsSyntaxVisitor___type_collection};
+  val_t variable0;
+  val_t variable1;
+  static val_t once_value_variable1_23; static int once_bool_variable1_23;
+  trace.prev = tracehead; tracehead = &trace;
+  variable0 = ATTR_syntax_base___AbsSyntaxVisitor____module( self) /*AbsSyntaxVisitor::_module*/;
+  if (once_bool_variable1_23) variable1 = once_value_variable1_23;
+  else {
+    variable1 = NEW_string___String___with_native(BOX_NativeString("Collection"), TAG_Int(10)); /*new String*/
+    variable1 = ((symbol___String___to_symbol_t)CALL(variable1,COLOR_symbol___String___to_symbol))(variable1) /*String::to_symbol*/;
+    once_value_variable1_23 = variable1;
+    once_bool_variable1_23 = true;
+  }
+  variable0 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable0,COLOR_abstractmetamodel___MMModule___class_by_name))(variable0, variable1) /*MMModule::class_by_name*/;
+  variable0 = ((genericity___MMLocalClass___get_type_t)CALL(variable0,COLOR_static_type___MMLocalClass___get_type))(variable0) /*MMLocalClass::get_type*/;
+  goto return_label22;
+  return_label22: while(false);
+  tracehead = trace.prev;
+  return variable0;
+}
 val_t syntax_base___AbsSyntaxVisitor___type_array(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___type_array, 242};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 240, LOCATE_syntax_base___AbsSyntaxVisitor___type_array};
   val_t variable0;
   val_t variable1;
   val_t variable2;
-  static val_t once_value_variable2_23; static int once_bool_variable2_23;
+  static val_t once_value_variable2_25; static int once_bool_variable2_25;
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   variable1 = ATTR_syntax_base___AbsSyntaxVisitor____module( self) /*AbsSyntaxVisitor::_module*/;
-  if (once_bool_variable2_23) variable2 = once_value_variable2_23;
+  if (once_bool_variable2_25) variable2 = once_value_variable2_25;
   else {
     variable2 = NEW_string___String___with_native(BOX_NativeString("Array"), TAG_Int(5)); /*new String*/
     variable2 = ((symbol___String___to_symbol_t)CALL(variable2,COLOR_symbol___String___to_symbol))(variable2) /*String::to_symbol*/;
-    once_value_variable2_23 = variable2;
-    once_bool_variable2_23 = true;
+    once_value_variable2_25 = variable2;
+    once_bool_variable2_25 = true;
   }
-  variable1 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable1,COLOR_abstractmetamodel___MMModule___class_by_name))(variable1, variable2) /*MMSrcModule::class_by_name*/;
-  variable2 = NEW_array___Array___with_capacity(TAG_Int(1)); /*new Array[MMType]*/
-  ((array___AbstractArray___add_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add))(variable2,  variable0 /*stype*/) /*Array::add*/;
+  variable1 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable1,COLOR_abstractmetamodel___MMModule___class_by_name))(variable1, variable2) /*MMModule::class_by_name*/;
+  variable2 = NEW_array___Array___with_capacity(TAG_Int(1)); /*new Array[E]*/
+  ((array___AbstractArray___add_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add))(variable2,  variable0 /*stype*/) /*AbstractArray::add*/;
   variable1 = ((genericity___MMLocalClass___get_instantiate_type_t)CALL(variable1,COLOR_genericity___MMLocalClass___get_instantiate_type))(variable1, variable2) /*MMLocalClass::get_instantiate_type*/;
-  goto return_label22;
-  return_label22: while(false);
+  goto return_label24;
+  return_label24: while(false);
   tracehead = trace.prev;
   return variable1;
 }
 val_t syntax_base___AbsSyntaxVisitor___type_discrete(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___type_discrete, 248};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 246, LOCATE_syntax_base___AbsSyntaxVisitor___type_discrete};
   val_t variable0;
   val_t variable1;
-  static val_t once_value_variable1_25; static int once_bool_variable1_25;
+  static val_t once_value_variable1_27; static int once_bool_variable1_27;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ATTR_syntax_base___AbsSyntaxVisitor____module( self) /*AbsSyntaxVisitor::_module*/;
-  if (once_bool_variable1_25) variable1 = once_value_variable1_25;
+  if (once_bool_variable1_27) variable1 = once_value_variable1_27;
   else {
     variable1 = NEW_string___String___with_native(BOX_NativeString("Discrete"), TAG_Int(8)); /*new String*/
     variable1 = ((symbol___String___to_symbol_t)CALL(variable1,COLOR_symbol___String___to_symbol))(variable1) /*String::to_symbol*/;
-    once_value_variable1_25 = variable1;
-    once_bool_variable1_25 = true;
+    once_value_variable1_27 = variable1;
+    once_bool_variable1_27 = true;
   }
-  variable0 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable0,COLOR_abstractmetamodel___MMModule___class_by_name))(variable0, variable1) /*MMSrcModule::class_by_name*/;
+  variable0 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable0,COLOR_abstractmetamodel___MMModule___class_by_name))(variable0, variable1) /*MMModule::class_by_name*/;
   variable0 = ((genericity___MMLocalClass___get_type_t)CALL(variable0,COLOR_static_type___MMLocalClass___get_type))(variable0) /*MMLocalClass::get_type*/;
-  goto return_label24;
-  return_label24: while(false);
+  goto return_label26;
+  return_label26: while(false);
   tracehead = trace.prev;
   return variable0;
 }
 val_t syntax_base___AbsSyntaxVisitor___type_range(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___type_range, 254};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 252, LOCATE_syntax_base___AbsSyntaxVisitor___type_range};
   val_t variable0;
   val_t variable1;
   val_t variable2;
-  static val_t once_value_variable2_27; static int once_bool_variable2_27;
+  static val_t once_value_variable2_29; static int once_bool_variable2_29;
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   variable1 = ATTR_syntax_base___AbsSyntaxVisitor____module( self) /*AbsSyntaxVisitor::_module*/;
-  if (once_bool_variable2_27) variable2 = once_value_variable2_27;
+  if (once_bool_variable2_29) variable2 = once_value_variable2_29;
   else {
     variable2 = NEW_string___String___with_native(BOX_NativeString("Range"), TAG_Int(5)); /*new String*/
     variable2 = ((symbol___String___to_symbol_t)CALL(variable2,COLOR_symbol___String___to_symbol))(variable2) /*String::to_symbol*/;
-    once_value_variable2_27 = variable2;
-    once_bool_variable2_27 = true;
+    once_value_variable2_29 = variable2;
+    once_bool_variable2_29 = true;
   }
-  variable1 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable1,COLOR_abstractmetamodel___MMModule___class_by_name))(variable1, variable2) /*MMSrcModule::class_by_name*/;
-  variable2 = NEW_array___Array___with_capacity(TAG_Int(1)); /*new Array[MMType]*/
-  ((array___AbstractArray___add_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add))(variable2,  variable0 /*stype*/) /*Array::add*/;
+  variable1 = ((abstractmetamodel___MMModule___class_by_name_t)CALL(variable1,COLOR_abstractmetamodel___MMModule___class_by_name))(variable1, variable2) /*MMModule::class_by_name*/;
+  variable2 = NEW_array___Array___with_capacity(TAG_Int(1)); /*new Array[E]*/
+  ((array___AbstractArray___add_t)CALL(variable2,COLOR_abstract_collection___SimpleCollection___add))(variable2,  variable0 /*stype*/) /*AbstractArray::add*/;
   variable1 = ((genericity___MMLocalClass___get_instantiate_type_t)CALL(variable1,COLOR_genericity___MMLocalClass___get_instantiate_type))(variable1, variable2) /*MMLocalClass::get_instantiate_type*/;
-  goto return_label26;
-  return_label26: while(false);
+  goto return_label28;
+  return_label28: while(false);
   tracehead = trace.prev;
   return variable1;
 }
 val_t syntax_base___AbsSyntaxVisitor___type_none(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___type_none, 260};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 258, LOCATE_syntax_base___AbsSyntaxVisitor___type_none};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 = ATTR_syntax_base___AbsSyntaxVisitor____module( self) /*AbsSyntaxVisitor::_module*/;
-  variable0 = ((static_type___MMModule___type_none_t)CALL(variable0,COLOR_static_type___MMModule___type_none))(variable0) /*MMSrcModule::type_none*/;
-  goto return_label28;
-  return_label28: while(false);
+  variable0 = ((static_type___MMModule___type_none_t)CALL(variable0,COLOR_static_type___MMModule___type_none))(variable0) /*MMModule::type_none*/;
+  goto return_label30;
+  return_label30: while(false);
   tracehead = trace.prev;
   return variable0;
 }
 val_t syntax_base___AbsSyntaxVisitor___module(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___module, 266};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 264, LOCATE_syntax_base___AbsSyntaxVisitor___module};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return ATTR_syntax_base___AbsSyntaxVisitor____module( self) /*AbsSyntaxVisitor::_module*/;
 }
 void syntax_base___AbsSyntaxVisitor___module__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___module__eq, 266};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 264, LOCATE_syntax_base___AbsSyntaxVisitor___module__eq};
   trace.prev = tracehead; tracehead = &trace;
   ATTR_syntax_base___AbsSyntaxVisitor____module( self) /*AbsSyntaxVisitor::_module*/ =  param0;
   tracehead = trace.prev;
   return;
 }
 val_t syntax_base___AbsSyntaxVisitor___local_class(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___local_class, 269};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 267, LOCATE_syntax_base___AbsSyntaxVisitor___local_class};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return ATTR_syntax_base___AbsSyntaxVisitor____local_class( self) /*AbsSyntaxVisitor::_local_class*/;
 }
 void syntax_base___AbsSyntaxVisitor___local_class__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___local_class__eq, 269};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 267, LOCATE_syntax_base___AbsSyntaxVisitor___local_class__eq};
   trace.prev = tracehead; tracehead = &trace;
   ATTR_syntax_base___AbsSyntaxVisitor____local_class( self) /*AbsSyntaxVisitor::_local_class*/ =  param0;
   tracehead = trace.prev;
   return;
 }
 val_t syntax_base___AbsSyntaxVisitor___local_property(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___local_property, 272};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 270, LOCATE_syntax_base___AbsSyntaxVisitor___local_property};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return ATTR_syntax_base___AbsSyntaxVisitor____local_property( self) /*AbsSyntaxVisitor::_local_property*/;
 }
 void syntax_base___AbsSyntaxVisitor___local_property__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___local_property__eq, 272};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 270, LOCATE_syntax_base___AbsSyntaxVisitor___local_property__eq};
   trace.prev = tracehead; tracehead = &trace;
   ATTR_syntax_base___AbsSyntaxVisitor____local_property( self) /*AbsSyntaxVisitor::_local_property*/ =  param0;
   tracehead = trace.prev;
   return;
 }
 val_t syntax_base___AbsSyntaxVisitor___tc(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___tc, 275};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 273, LOCATE_syntax_base___AbsSyntaxVisitor___tc};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return ATTR_syntax_base___AbsSyntaxVisitor____tc( self) /*AbsSyntaxVisitor::_tc*/;
 }
 void syntax_base___AbsSyntaxVisitor___error(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___error, 278};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 276, LOCATE_syntax_base___AbsSyntaxVisitor___error};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -684,7 +723,7 @@ void syntax_base___AbsSyntaxVisitor___error(val_t  self, val_t  param0, val_t  p
   return;
 }
 void syntax_base___AbsSyntaxVisitor___warning(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___warning, 284};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 282, LOCATE_syntax_base___AbsSyntaxVisitor___warning};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -722,7 +761,7 @@ void syntax_base___AbsSyntaxVisitor___warning(val_t  self, val_t  param0, val_t
   return;
 }
 val_t syntax_base___AbsSyntaxVisitor___check_conform(val_t  self, val_t  param0, val_t  param1, val_t  param2) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___check_conform, 290};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 288, LOCATE_syntax_base___AbsSyntaxVisitor___check_conform};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -739,20 +778,20 @@ val_t syntax_base___AbsSyntaxVisitor___check_conform(val_t  self, val_t  param0,
   variable0 =  param0;
   variable1 =  param1;
   variable2 =  param2;
-  variable3 = TAG_Bool(( variable2 /*stype*/ ==  NIT_NULL /*null*/) || (( variable2 /*stype*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*stype*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*stype*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*stype*/,COLOR_kernel___Object_____eqeq))( variable2 /*stype*/,  NIT_NULL /*null*/) /*MMType::==*/)))));
+  variable3 = TAG_Bool(( variable2 /*stype*/ ==  NIT_NULL /*null*/) || (( variable2 /*stype*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable2 /*stype*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable2 /*stype*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable2 /*stype*/,COLOR_kernel___Object_____eqeq))( variable2 /*stype*/,  NIT_NULL /*null*/) /*Object::==*/)))));
   variable4 = variable3;
   if (!UNTAG_Bool(variable4)) { /* or */
-    variable4 = TAG_Bool(( variable1 /*subtype*/ ==  NIT_NULL /*null*/) || (( variable1 /*subtype*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*subtype*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*subtype*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*subtype*/,COLOR_kernel___Object_____eqeq))( variable1 /*subtype*/,  NIT_NULL /*null*/) /*MMType::==*/)))));
+    variable4 = TAG_Bool(( variable1 /*subtype*/ ==  NIT_NULL /*null*/) || (( variable1 /*subtype*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*subtype*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*subtype*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*subtype*/,COLOR_kernel___Object_____eqeq))( variable1 /*subtype*/,  NIT_NULL /*null*/) /*Object::==*/)))));
   }
   variable3 = variable4;
   if (UNTAG_Bool(variable3)) { /*if*/
     variable3 =  TAG_Bool(false);
-    goto return_label31;
+    goto return_label33;
   }
   variable3 = ((static_type___MMType_____l_t)CALL( variable1 /*subtype*/,COLOR_static_type___MMType_____l))( variable1 /*subtype*/,  variable2 /*stype*/) /*MMType::<*/;
   if (UNTAG_Bool(variable3)) { /*if*/
     variable3 =  TAG_Bool(true);
-    goto return_label31;
+    goto return_label33;
   }
   variable3 = NEW_string___String___init(); /*new String*/
   variable4 = NEW_string___String___with_native(BOX_NativeString("Type error: expected "), TAG_Int(21)); /*new String*/
@@ -772,13 +811,13 @@ val_t syntax_base___AbsSyntaxVisitor___check_conform(val_t  self, val_t  param0,
   ((string___String___append_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___append))(variable3, variable11) /*String::append*/;
   ((syntax_base___AbsSyntaxVisitor___error_t)CALL( self,COLOR_syntax_base___AbsSyntaxVisitor___error))( self,  variable0 /*n*/, variable3) /*AbsSyntaxVisitor::error*/;
   variable3 =  TAG_Bool(false);
-  goto return_label31;
-  return_label31: while(false);
+  goto return_label33;
+  return_label33: while(false);
   tracehead = trace.prev;
   return variable3;
 }
 void syntax_base___AbsSyntaxVisitor___init(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AbsSyntaxVisitor___init, 304};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 304, LOCATE_syntax_base___AbsSyntaxVisitor___init};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
@@ -792,7 +831,7 @@ void syntax_base___AbsSyntaxVisitor___init(val_t  self, val_t  param0, val_t  pa
   return;
 }
 void syntax_base___PNode___accept_abs_syntax_visitor(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___PNode___accept_abs_syntax_visitor, 314};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 314, LOCATE_syntax_base___PNode___accept_abs_syntax_visitor};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
@@ -801,13 +840,13 @@ void syntax_base___PNode___accept_abs_syntax_visitor(val_t  self, val_t  param0)
   return;
 }
 val_t syntax_base___Token___to_symbol(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___Token___to_symbol, 320};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 320, LOCATE_syntax_base___Token___to_symbol};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
   variable1 = ATTR_syntax_base___Token____symbol( self) /*Token::_symbol*/;
   variable0 = variable1;
-  variable1 = TAG_Bool(( variable0 /*s*/ ==  NIT_NULL /*null*/) || (( variable0 /*s*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*s*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*s*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*s*/,COLOR_kernel___Object_____eqeq))( variable0 /*s*/,  NIT_NULL /*null*/) /*Symbol::==*/)))));
+  variable1 = TAG_Bool(( variable0 /*s*/ ==  NIT_NULL /*null*/) || (( variable0 /*s*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable0 /*s*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable0 /*s*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable0 /*s*/,COLOR_kernel___Object_____eqeq))( variable0 /*s*/,  NIT_NULL /*null*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable1)) { /*if*/
     variable1 = ((lexer___Token___text_t)CALL( self,COLOR_lexer___Token___text))( self) /*Token::text*/;
     variable1 = ((symbol___String___to_symbol_t)CALL(variable1,COLOR_symbol___String___to_symbol))(variable1) /*String::to_symbol*/;
@@ -815,109 +854,121 @@ val_t syntax_base___Token___to_symbol(val_t  self) {
     ATTR_syntax_base___Token____symbol( self) /*Token::_symbol*/ =  variable0 /*s*/;
   }
   variable0 =  variable0 /*s*/;
-  goto return_label34;
-  return_label34: while(false);
+  goto return_label36;
+  return_label36: while(false);
   tracehead = trace.prev;
   return variable0;
 }
 val_t syntax_base___PClassdef___local_class(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___PClassdef___local_class, 334};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 334, LOCATE_syntax_base___PClassdef___local_class};
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "local_class", LOCATE_syntax_base___Token___to_symbol, 334);
+  fprintf(stderr, "Deferred method %s called");
+  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_syntax_base___Token___to_symbol, LOCATE_syntax_base, 334);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 val_t syntax_base___AAttrPropdef___prop(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AAttrPropdef___prop, 339};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 339, LOCATE_syntax_base___AAttrPropdef___prop};
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "prop", LOCATE_syntax_base___Token___to_symbol, 339);
+  fprintf(stderr, "Deferred method %s called");
+  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_syntax_base___Token___to_symbol, LOCATE_syntax_base, 339);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 val_t syntax_base___AAttrPropdef___readmethod(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AAttrPropdef___readmethod, 342};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 342, LOCATE_syntax_base___AAttrPropdef___readmethod};
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "readmethod", LOCATE_syntax_base___Token___to_symbol, 342);
+  fprintf(stderr, "Deferred method %s called");
+  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_syntax_base___Token___to_symbol, LOCATE_syntax_base, 342);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 val_t syntax_base___AAttrPropdef___writemethod(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AAttrPropdef___writemethod, 345};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 345, LOCATE_syntax_base___AAttrPropdef___writemethod};
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "writemethod", LOCATE_syntax_base___Token___to_symbol, 345);
+  fprintf(stderr, "Deferred method %s called");
+  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_syntax_base___Token___to_symbol, LOCATE_syntax_base, 345);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 val_t syntax_base___AMethPropdef___method(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AMethPropdef___method, 350};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 350, LOCATE_syntax_base___AMethPropdef___method};
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "method", LOCATE_syntax_base___Token___to_symbol, 350);
+  fprintf(stderr, "Deferred method %s called");
+  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_syntax_base___Token___to_symbol, LOCATE_syntax_base, 350);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 val_t syntax_base___ATypePropdef___prop(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___ATypePropdef___prop, 355};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 355, LOCATE_syntax_base___ATypePropdef___prop};
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "prop", LOCATE_syntax_base___Token___to_symbol, 355);
+  fprintf(stderr, "Deferred method %s called");
+  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_syntax_base___Token___to_symbol, LOCATE_syntax_base, 355);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 val_t syntax_base___PParam___position(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___PParam___position, 360};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 360, LOCATE_syntax_base___PParam___position};
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "position", LOCATE_syntax_base___Token___to_symbol, 360);
+  fprintf(stderr, "Deferred method %s called");
+  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_syntax_base___Token___to_symbol, LOCATE_syntax_base, 360);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 val_t syntax_base___PParam___variable(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___PParam___variable, 363};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 363, LOCATE_syntax_base___PParam___variable};
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "variable", LOCATE_syntax_base___Token___to_symbol, 363);
+  fprintf(stderr, "Deferred method %s called");
+  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_syntax_base___Token___to_symbol, LOCATE_syntax_base, 363);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 val_t syntax_base___PType___get_local_class(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___PType___get_local_class, 368};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 368, LOCATE_syntax_base___PType___get_local_class};
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "get_local_class", LOCATE_syntax_base___Token___to_symbol, 368);
+  fprintf(stderr, "Deferred method %s called");
+  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_syntax_base___Token___to_symbol, LOCATE_syntax_base, 368);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 val_t syntax_base___PType___get_stype(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___PType___get_stype, 373};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 373, LOCATE_syntax_base___PType___get_stype};
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "get_stype", LOCATE_syntax_base___Token___to_symbol, 373);
+  fprintf(stderr, "Deferred method %s called");
+  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_syntax_base___Token___to_symbol, LOCATE_syntax_base, 373);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 val_t syntax_base___PType___get_unchecked_stype(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___PType___get_unchecked_stype, 377};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 377, LOCATE_syntax_base___PType___get_unchecked_stype};
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "get_unchecked_stype", LOCATE_syntax_base___Token___to_symbol, 377);
+  fprintf(stderr, "Deferred method %s called");
+  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_syntax_base___Token___to_symbol, LOCATE_syntax_base, 377);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
 void syntax_base___PType___check_conform(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___PType___check_conform, 383};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 383, LOCATE_syntax_base___PType___check_conform};
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "check_conform", LOCATE_syntax_base___Token___to_symbol, 383);
+  fprintf(stderr, "Deferred method %s called");
+  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_syntax_base___Token___to_symbol, LOCATE_syntax_base, 383);
   nit_exit(1);
   tracehead = trace.prev;
   return;
 }
 val_t syntax_base___AType___get_local_class(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AType___get_local_class, 393};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 393, LOCATE_syntax_base___AType___get_local_class};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -935,14 +986,14 @@ val_t syntax_base___AType___get_local_class(val_t  self, val_t  param0) {
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   variable2 = ((parser_nodes___AType___n_id_t)CALL( self,COLOR_parser_nodes___AType___n_id))( self) /*AType::n_id*/;
-  variable2 = ((syntax_base___Token___to_symbol_t)CALL(variable2,COLOR_syntax_base___Token___to_symbol))(variable2) /*TClassid::to_symbol*/;
+  variable2 = ((syntax_base___Token___to_symbol_t)CALL(variable2,COLOR_syntax_base___Token___to_symbol))(variable2) /*Token::to_symbol*/;
   variable1 = variable2;
   variable3 = ((syntax_base___AbsSyntaxVisitor___module_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___module))( variable0 /*v*/) /*AbsSyntaxVisitor::module*/;
   variable2 = variable3;
   variable4 = ((syntax_base___AbsSyntaxVisitor___local_class_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___local_class))( variable0 /*v*/) /*AbsSyntaxVisitor::local_class*/;
   variable3 = variable4;
   variable4 = ((syntax_base___MMSrcLocalClass___formal_dict_t)CALL( variable3 /*cla*/,COLOR_syntax_base___MMSrcLocalClass___formal_dict))( variable3 /*cla*/) /*MMSrcLocalClass::formal_dict*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable4 ==  NIT_NULL /*null*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  NIT_NULL /*null*/) /*Map::==*/)))))));
+  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable4 ==  NIT_NULL /*null*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  NIT_NULL /*null*/) /*Object::==*/)))))));
   variable5 = variable4;
   if (UNTAG_Bool(variable5)) { /* and */
     variable5 = ((syntax_base___MMSrcLocalClass___formal_dict_t)CALL( variable3 /*cla*/,COLOR_syntax_base___MMSrcLocalClass___formal_dict))( variable3 /*cla*/) /*MMSrcLocalClass::formal_dict*/;
@@ -951,11 +1002,11 @@ val_t syntax_base___AType___get_local_class(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 = variable4;
   if (!UNTAG_Bool(variable5)) { /* or */
-    variable5 = ((abstractmetamodel___MMLocalClass___global_properties_t)CALL( variable3 /*cla*/,COLOR_abstractmetamodel___MMLocalClass___global_properties))( variable3 /*cla*/) /*MMSrcLocalClass::global_properties*/;
-    variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable5 ==  NIT_NULL /*null*/) || ((variable5 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable5,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable5, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable5,COLOR_kernel___Object_____eqeq))(variable5,  NIT_NULL /*null*/) /*Set::==*/)))))));
+    variable5 = ((abstractmetamodel___MMLocalClass___global_properties_t)CALL( variable3 /*cla*/,COLOR_abstractmetamodel___MMLocalClass___global_properties))( variable3 /*cla*/) /*MMLocalClass::global_properties*/;
+    variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable5 ==  NIT_NULL /*null*/) || ((variable5 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable5,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable5, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable5,COLOR_kernel___Object_____eqeq))(variable5,  NIT_NULL /*null*/) /*Object::==*/)))))));
     variable6 = variable5;
     if (UNTAG_Bool(variable6)) { /* and */
-      variable6 = ((abstractmetamodel___MMLocalClass___has_global_property_by_name_t)CALL( variable3 /*cla*/,COLOR_abstractmetamodel___MMLocalClass___has_global_property_by_name))( variable3 /*cla*/,  variable1 /*name*/) /*MMSrcLocalClass::has_global_property_by_name*/;
+      variable6 = ((abstractmetamodel___MMLocalClass___has_global_property_by_name_t)CALL( variable3 /*cla*/,COLOR_abstractmetamodel___MMLocalClass___has_global_property_by_name))( variable3 /*cla*/,  variable1 /*name*/) /*MMLocalClass::has_global_property_by_name*/;
     }
     variable5 = variable6;
   }
@@ -975,9 +1026,9 @@ val_t syntax_base___AType___get_local_class(val_t  self, val_t  param0) {
     ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/, variable4, variable5) /*AbsSyntaxVisitor::error*/;
     ATTR_syntax_base___AType____stype_cached( self) /*AType::_stype_cached*/ =  TAG_Bool(true);
     variable1 =  NIT_NULL /*null*/;
-    goto return_label35;
+    goto return_label37;
   }
-  variable4 = ((abstractmetamodel___MMModule___has_global_class_named_t)CALL( variable2 /*mod*/,COLOR_abstractmetamodel___MMModule___has_global_class_named))( variable2 /*mod*/,  variable1 /*name*/) /*MMSrcModule::has_global_class_named*/;
+  variable4 = ((abstractmetamodel___MMModule___has_global_class_named_t)CALL( variable2 /*mod*/,COLOR_abstractmetamodel___MMModule___has_global_class_named))( variable2 /*mod*/,  variable1 /*name*/) /*MMModule::has_global_class_named*/;
   if (UNTAG_Bool( TAG_Bool(!UNTAG_Bool(variable4)))) { /*if*/
     variable4 = ((parser_nodes___AType___n_id_t)CALL( self,COLOR_parser_nodes___AType___n_id))( self) /*AType::n_id*/;
     variable5 = NEW_string___String___init(); /*new String*/
@@ -999,20 +1050,20 @@ val_t syntax_base___AType___get_local_class(val_t  self, val_t  param0) {
     ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/, variable4, variable5) /*AbsSyntaxVisitor::error*/;
     ATTR_syntax_base___AType____stype_cached( self) /*AType::_stype_cached*/ =  TAG_Bool(true);
     variable1 =  NIT_NULL /*null*/;
-    goto return_label35;
+    goto return_label37;
   }
-  variable5 = ((abstractmetamodel___MMModule___class_by_name_t)CALL( variable2 /*mod*/,COLOR_abstractmetamodel___MMModule___class_by_name))( variable2 /*mod*/,  variable1 /*name*/) /*MMSrcModule::class_by_name*/;
+  variable5 = ((abstractmetamodel___MMModule___class_by_name_t)CALL( variable2 /*mod*/,COLOR_abstractmetamodel___MMModule___class_by_name))( variable2 /*mod*/,  variable1 /*name*/) /*MMModule::class_by_name*/;
   variable4 = variable5;
   variable5 = ((abstractmetamodel___MMLocalClass___global_t)CALL( variable4 /*local_class*/,COLOR_abstractmetamodel___MMLocalClass___global))( variable4 /*local_class*/) /*MMLocalClass::global*/;
   ((syntax_base___MMGlobalClass___check_visibility_t)CALL(variable5,COLOR_syntax_base___MMGlobalClass___check_visibility))(variable5,  variable0 /*v*/,  self,  variable2 /*mod*/) /*MMGlobalClass::check_visibility*/;
   variable1 =  variable4 /*local_class*/;
-  goto return_label35;
-  return_label35: while(false);
+  goto return_label37;
+  return_label37: while(false);
   tracehead = trace.prev;
   return variable1;
 }
 val_t syntax_base___AType___get_unchecked_stype(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AType___get_unchecked_stype, 416};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 416, LOCATE_syntax_base___AType___get_unchecked_stype};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -1037,11 +1088,11 @@ val_t syntax_base___AType___get_unchecked_stype(val_t  self, val_t  param0) {
   variable1 = ATTR_syntax_base___AType____stype_cached( self) /*AType::_stype_cached*/;
   if (UNTAG_Bool(variable1)) { /*if*/
     variable1 = ATTR_syntax_base___AType____stype_cache( self) /*AType::_stype_cache*/;
-    goto return_label36;
+    goto return_label38;
   }
   ATTR_syntax_base___AType____stype_cached( self) /*AType::_stype_cached*/ =  TAG_Bool(true);
   variable2 = ((parser_nodes___AType___n_id_t)CALL( self,COLOR_parser_nodes___AType___n_id))( self) /*AType::n_id*/;
-  variable2 = ((syntax_base___Token___to_symbol_t)CALL(variable2,COLOR_syntax_base___Token___to_symbol))(variable2) /*TClassid::to_symbol*/;
+  variable2 = ((syntax_base___Token___to_symbol_t)CALL(variable2,COLOR_syntax_base___Token___to_symbol))(variable2) /*Token::to_symbol*/;
   variable1 = variable2;
   variable3 = ((syntax_base___AbsSyntaxVisitor___module_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___module))( variable0 /*v*/) /*AbsSyntaxVisitor::module*/;
   variable2 = variable3;
@@ -1066,20 +1117,20 @@ val_t syntax_base___AType___get_unchecked_stype(val_t  self, val_t  param0) {
       ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable9) /*String::append*/;
       ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/,  self, variable4) /*AbsSyntaxVisitor::error*/;
       variable1 =  NIT_NULL /*null*/;
-      goto return_label36;
+      goto return_label38;
     }
     variable5 = ((syntax_base___MMSrcLocalClass___formal_dict_t)CALL( variable3 /*cla*/,COLOR_syntax_base___MMSrcLocalClass___formal_dict))( variable3 /*cla*/) /*MMSrcLocalClass::formal_dict*/;
     variable5 = ((abstract_collection___Map_____bra_t)CALL(variable5,COLOR_abstract_collection___Map_____bra))(variable5,  variable1 /*name*/) /*Map::[]*/;
     variable4 = variable5;
     ATTR_syntax_base___AType____stype_cache( self) /*AType::_stype_cache*/ =  variable4 /*formal*/;
     variable1 =  variable4 /*formal*/;
-    goto return_label36;
+    goto return_label38;
   }
-  variable4 = ((abstractmetamodel___MMLocalClass___global_properties_t)CALL( variable3 /*cla*/,COLOR_abstractmetamodel___MMLocalClass___global_properties))( variable3 /*cla*/) /*MMSrcLocalClass::global_properties*/;
-  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable4 ==  NIT_NULL /*null*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  NIT_NULL /*null*/) /*Set::==*/)))))));
+  variable4 = ((abstractmetamodel___MMLocalClass___global_properties_t)CALL( variable3 /*cla*/,COLOR_abstractmetamodel___MMLocalClass___global_properties))( variable3 /*cla*/) /*MMLocalClass::global_properties*/;
+  variable4 = TAG_Bool(!UNTAG_Bool(TAG_Bool((variable4 ==  NIT_NULL /*null*/) || ((variable4 != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN(variable4, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL(variable4,COLOR_kernel___Object_____eqeq))(variable4,  NIT_NULL /*null*/) /*Object::==*/)))))));
   variable5 = variable4;
   if (UNTAG_Bool(variable5)) { /* and */
-    variable5 = ((abstractmetamodel___MMLocalClass___has_global_property_by_name_t)CALL( variable3 /*cla*/,COLOR_abstractmetamodel___MMLocalClass___has_global_property_by_name))( variable3 /*cla*/,  variable1 /*name*/) /*MMSrcLocalClass::has_global_property_by_name*/;
+    variable5 = ((abstractmetamodel___MMLocalClass___has_global_property_by_name_t)CALL( variable3 /*cla*/,COLOR_abstractmetamodel___MMLocalClass___has_global_property_by_name))( variable3 /*cla*/,  variable1 /*name*/) /*MMLocalClass::has_global_property_by_name*/;
   }
   variable4 = variable5;
   if (UNTAG_Bool(variable4)) { /*if*/
@@ -1099,13 +1150,15 @@ val_t syntax_base___AType___get_unchecked_stype(val_t  self, val_t  param0) {
       ((string___String___append_t)CALL(variable4,COLOR_abstract_collection___IndexedCollection___append))(variable4, variable9) /*String::append*/;
       ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/,  self, variable4) /*AbsSyntaxVisitor::error*/;
       variable1 =  NIT_NULL /*null*/;
-      goto return_label36;
+      goto return_label38;
     }
-    variable5 = ((genericity___MMLocalClass___get_type_t)CALL( variable3 /*cla*/,COLOR_static_type___MMLocalClass___get_type))( variable3 /*cla*/) /*MMSrcLocalClass::get_type*/;
-    variable5 = ((virtualtype___MMType___select_virtual_type_t)CALL(variable5,COLOR_virtualtype___MMType___select_virtual_type))(variable5,  variable1 /*name*/) /*MMType::select_virtual_type*/;
-    variable5 = ((virtualtype___MMTypeProperty___stype_t)CALL(variable5,COLOR_virtualtype___MMTypeProperty___stype))(variable5) /*MMTypeProperty::stype*/;
+    variable5 = ((genericity___MMLocalClass___get_type_t)CALL( variable3 /*cla*/,COLOR_static_type___MMLocalClass___get_type))( variable3 /*cla*/) /*MMLocalClass::get_type*/;
+    variable5 = ((static_type___MMType___local_class_t)CALL(variable5,COLOR_static_type___MMType___local_class))(variable5) /*MMType::local_class*/;
+    variable5 = ((virtualtype___MMLocalClass___select_virtual_type_t)CALL(variable5,COLOR_virtualtype___MMLocalClass___select_virtual_type))(variable5,  variable1 /*name*/) /*MMLocalClass::select_virtual_type*/;
+    variable6 = ((genericity___MMLocalClass___get_type_t)CALL( variable3 /*cla*/,COLOR_static_type___MMLocalClass___get_type))( variable3 /*cla*/) /*MMLocalClass::get_type*/;
+    variable5 = ((virtualtype___MMTypeProperty___stype_for_t)CALL(variable5,COLOR_virtualtype___MMTypeProperty___stype_for))(variable5, variable6) /*MMTypeProperty::stype_for*/;
     variable4 = variable5;
-    variable5 = TAG_Bool(( variable4 /*t*/ ==  NIT_NULL /*null*/) || (( variable4 /*t*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*t*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*t*/,COLOR_kernel___Object_____eqeq))( variable4 /*t*/,  NIT_NULL /*null*/) /*MMVirtualType::==*/)))));
+    variable5 = TAG_Bool(( variable4 /*t*/ ==  NIT_NULL /*null*/) || (( variable4 /*t*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*t*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*t*/,COLOR_kernel___Object_____eqeq))( variable4 /*t*/,  NIT_NULL /*null*/) /*Object::==*/)))));
     if (UNTAG_Bool(variable5)) { /*if*/
       variable5 = NEW_string___String___init(); /*new String*/
       variable6 = NEW_string___String___with_native(BOX_NativeString("Type error: circular definition in formal type "), TAG_Int(47)); /*new String*/
@@ -1119,18 +1172,18 @@ val_t syntax_base___AType___get_unchecked_stype(val_t  self, val_t  param0) {
       ((string___String___append_t)CALL(variable5,COLOR_abstract_collection___IndexedCollection___append))(variable5, variable10) /*String::append*/;
       ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/,  self, variable5) /*AbsSyntaxVisitor::error*/;
       variable1 =  NIT_NULL /*null*/;
-      goto return_label36;
+      goto return_label38;
     }
     ATTR_syntax_base___AType____stype_cache( self) /*AType::_stype_cache*/ =  variable4 /*t*/;
     variable1 =  variable4 /*t*/;
-    goto return_label36;
+    goto return_label38;
   }
   variable5 = ((syntax_base___AType___get_local_class_t)CALL( self,COLOR_syntax_base___PType___get_local_class))( self,  variable0 /*v*/) /*AType::get_local_class*/;
   variable4 = variable5;
-  variable5 = TAG_Bool(( variable4 /*local_class*/ ==  NIT_NULL /*null*/) || (( variable4 /*local_class*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*local_class*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*local_class*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*local_class*/,COLOR_kernel___Object_____eqeq))( variable4 /*local_class*/,  NIT_NULL /*null*/) /*MMLocalClass::==*/)))));
+  variable5 = TAG_Bool(( variable4 /*local_class*/ ==  NIT_NULL /*null*/) || (( variable4 /*local_class*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*local_class*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*local_class*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*local_class*/,COLOR_kernel___Object_____eqeq))( variable4 /*local_class*/,  NIT_NULL /*null*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable5)) { /*if*/
     variable1 =  NIT_NULL /*null*/;
-    goto return_label36;
+    goto return_label38;
   }
   variable6 = ((parser_nodes___AType___n_types_t)CALL( self,COLOR_parser_nodes___AType___n_types))( self) /*AType::n_types*/;
   variable6 = ((list___List___length_t)CALL(variable6,COLOR_abstract_collection___Collection___length))(variable6) /*List::length*/;
@@ -1163,11 +1216,11 @@ val_t syntax_base___AType___get_unchecked_stype(val_t  self, val_t  param0) {
     ((string___String___append_t)CALL(variable6,COLOR_abstract_collection___IndexedCollection___append))(variable6, variable18) /*String::append*/;
     ((syntax_base___AbsSyntaxVisitor___error_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___error))( variable0 /*v*/,  self, variable6) /*AbsSyntaxVisitor::error*/;
     variable1 =  NIT_NULL /*null*/;
-    goto return_label36;
+    goto return_label38;
   }
   variable6 = TAG_Bool(UNTAG_Int( variable5 /*arity*/)>UNTAG_Int( TAG_Int(0)));
   if (UNTAG_Bool(variable6)) { /*if*/
-    variable7 = NEW_array___Array___init(); /*new Array[MMType]*/
+    variable7 = NEW_array___Array___init(); /*new Array[E]*/
     variable6 = variable7;
     variable7 = ((parser_nodes___AType___n_types_t)CALL( self,COLOR_parser_nodes___AType___n_types))( self) /*AType::n_types*/;
     variable7 = ((list___List___iterator_t)CALL(variable7,COLOR_abstract_collection___Collection___iterator))(variable7) /*List::iterator*/;
@@ -1176,29 +1229,29 @@ val_t syntax_base___AType___get_unchecked_stype(val_t  self, val_t  param0) {
       if (!UNTAG_Bool(variable8)) break; /*for*/
       variable8 = ((list___ListIterator___item_t)CALL(variable7,COLOR_abstract_collection___Iterator___item))(variable7) /*ListIterator::item*/;
       variable9 = ((syntax_base___PType___get_unchecked_stype_t)CALL( variable8 /*p*/,COLOR_syntax_base___PType___get_unchecked_stype))( variable8 /*p*/,  variable0 /*v*/) /*PType::get_unchecked_stype*/;
-      ((array___AbstractArray___add_t)CALL( variable6 /*tab*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*tab*/, variable9) /*Array::add*/;
-      continue_37: while(0);
+      ((array___AbstractArray___add_t)CALL( variable6 /*tab*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*tab*/, variable9) /*AbstractArray::add*/;
+      continue_39: while(0);
       ((list___ListIterator___next_t)CALL(variable7,COLOR_abstract_collection___Iterator___next))(variable7) /*ListIterator::next*/;
     }
-    break_37: while(0);
+    break_39: while(0);
     variable8 = ((genericity___MMLocalClass___get_instantiate_type_t)CALL( variable4 /*local_class*/,COLOR_genericity___MMLocalClass___get_instantiate_type))( variable4 /*local_class*/,  variable6 /*tab*/) /*MMLocalClass::get_instantiate_type*/;
     variable7 = variable8;
     ATTR_syntax_base___AType____stype_cache( self) /*AType::_stype_cache*/ =  variable7 /*t*/;
     variable1 =  variable7 /*t*/;
-    goto return_label36;
+    goto return_label38;
   } else { /*if*/
     variable7 = ((genericity___MMLocalClass___get_type_t)CALL( variable4 /*local_class*/,COLOR_static_type___MMLocalClass___get_type))( variable4 /*local_class*/) /*MMLocalClass::get_type*/;
     variable6 = variable7;
     ATTR_syntax_base___AType____stype_cache( self) /*AType::_stype_cache*/ =  variable6 /*t*/;
     variable1 =  variable6 /*t*/;
-    goto return_label36;
+    goto return_label38;
   }
-  return_label36: while(false);
+  return_label38: while(false);
   tracehead = trace.prev;
   return variable1;
 }
 val_t syntax_base___AType___get_stype(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AType___get_stype, 473};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 473, LOCATE_syntax_base___AType___get_stype};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -1206,18 +1259,18 @@ val_t syntax_base___AType___get_stype(val_t  self, val_t  param0) {
   variable0 =  param0;
   variable2 = ((syntax_base___AType___get_unchecked_stype_t)CALL( self,COLOR_syntax_base___PType___get_unchecked_stype))( self,  variable0 /*v*/) /*AType::get_unchecked_stype*/;
   variable1 = variable2;
-  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*t*/ ==  NIT_NULL /*null*/) || (( variable1 /*t*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*t*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*t*/,COLOR_kernel___Object_____eqeq))( variable1 /*t*/,  NIT_NULL /*null*/) /*MMType::==*/)))))));
+  variable2 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable1 /*t*/ ==  NIT_NULL /*null*/) || (( variable1 /*t*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*t*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*t*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*t*/,COLOR_kernel___Object_____eqeq))( variable1 /*t*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable2)) { /*if*/
     ((syntax_base___AType___check_conform_t)CALL( self,COLOR_syntax_base___PType___check_conform))( self,  variable0 /*v*/) /*AType::check_conform*/;
   }
   variable1 =  variable1 /*t*/;
-  goto return_label38;
-  return_label38: while(false);
+  goto return_label40;
+  return_label40: while(false);
   tracehead = trace.prev;
   return variable1;
 }
 void syntax_base___AType___check_conform(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___AType___check_conform, 480};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 480, LOCATE_syntax_base___AType___check_conform};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -1232,9 +1285,9 @@ void syntax_base___AType___check_conform(val_t  self, val_t  param0) {
   variable0 =  param0;
   variable2 = ((syntax_base___AType___get_unchecked_stype_t)CALL( self,COLOR_syntax_base___PType___get_unchecked_stype))( self,  variable0 /*v*/) /*AType::get_unchecked_stype*/;
   variable1 = variable2;
-  variable2 = TAG_Bool(( variable1 /*st*/ ==  NIT_NULL /*null*/) || (( variable1 /*st*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*st*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*st*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*st*/,COLOR_kernel___Object_____eqeq))( variable1 /*st*/,  NIT_NULL /*null*/) /*MMType::==*/)))));
+  variable2 = TAG_Bool(( variable1 /*st*/ ==  NIT_NULL /*null*/) || (( variable1 /*st*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable1 /*st*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable1 /*st*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable1 /*st*/,COLOR_kernel___Object_____eqeq))( variable1 /*st*/,  NIT_NULL /*null*/) /*Object::==*/)))));
   if (UNTAG_Bool(variable2)) { /*if*/
-    goto return_label39;
+    goto return_label41;
   }
   variable3 = ((static_type___MMType___local_class_t)CALL( variable1 /*st*/,COLOR_static_type___MMType___local_class))( variable1 /*st*/) /*MMType::local_class*/;
   variable2 = variable3;
@@ -1243,7 +1296,7 @@ void syntax_base___AType___check_conform(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 = TAG_Bool(UNTAG_Int( variable3 /*arity*/)>UNTAG_Int( TAG_Int(0)));
   if (UNTAG_Bool(variable4)) { /*if*/
-    variable4 = NEW_range___Range___without_last( TAG_Int(0),  variable3 /*arity*/); /*new Range[Int]*/
+    variable4 = NEW_range___Range___without_last( TAG_Int(0),  variable3 /*arity*/); /*new Range[E]*/
     variable4 = ((range___Range___iterator_t)CALL(variable4,COLOR_abstract_collection___Collection___iterator))(variable4) /*Range::iterator*/;
     while (true) { /*for*/
       variable5 = ((abstract_collection___Iterator___is_ok_t)CALL(variable4,COLOR_abstract_collection___Iterator___is_ok))(variable4) /*Iterator::is_ok*/;
@@ -1255,29 +1308,69 @@ void syntax_base___AType___check_conform(val_t  self, val_t  param0) {
       variable8 = ((syntax_base___PType___get_stype_t)CALL( variable6 /*p*/,COLOR_syntax_base___PType___get_stype))( variable6 /*p*/,  variable0 /*v*/) /*PType::get_stype*/;
       variable7 = variable8;
       variable9 = ((genericity___MMLocalClass___get_formal_t)CALL( variable2 /*local_class*/,COLOR_genericity___MMLocalClass___get_formal))( variable2 /*local_class*/,  variable5 /*i*/) /*MMLocalClass::get_formal*/;
-      variable9 = ((type_formal___MMTypeFormal___bound_t)CALL(variable9,COLOR_type_formal___MMTypeFormal___bound))(variable9) /*MMTypeFormalParameter::bound*/;
+      variable9 = ((type_formal___MMTypeFormal___bound_t)CALL(variable9,COLOR_type_formal___MMTypeFormal___bound))(variable9) /*MMTypeFormal::bound*/;
       variable8 = variable9;
-      variable9 = TAG_Bool(( variable8 /*bt*/ ==  NIT_NULL /*null*/) || (( variable8 /*bt*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*bt*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*bt*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*bt*/,COLOR_kernel___Object_____eqeq))( variable8 /*bt*/,  NIT_NULL /*null*/) /*MMType::==*/)))));
+      variable9 = TAG_Bool(( variable8 /*bt*/ ==  NIT_NULL /*null*/) || (( variable8 /*bt*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*bt*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*bt*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*bt*/,COLOR_kernel___Object_____eqeq))( variable8 /*bt*/,  NIT_NULL /*null*/) /*Object::==*/)))));
       if (UNTAG_Bool(variable9)) { /*if*/
-        goto return_label39;
+        goto return_label41;
       }
       variable9 = ((static_type___MMType___adapt_to_t)CALL( variable8 /*bt*/,COLOR_static_type___MMType___adapt_to))( variable8 /*bt*/,  variable1 /*st*/) /*MMType::adapt_to*/;
       variable8 = variable9 /*bt=*/;
       ((syntax_base___AbsSyntaxVisitor___check_conform_t)CALL( variable0 /*v*/,COLOR_syntax_base___AbsSyntaxVisitor___check_conform))( variable0 /*v*/,  variable6 /*p*/,  variable7 /*pt*/,  variable8 /*bt*/) /*AbsSyntaxVisitor::check_conform*/;
-      continue_40: while(0);
+      continue_42: while(0);
       ((abstract_collection___Iterator___next_t)CALL(variable4,COLOR_abstract_collection___Iterator___next))(variable4) /*Iterator::next*/;
     }
-    break_40: while(0);
+    break_42: while(0);
   }
-  return_label39: while(false);
+  return_label41: while(false);
   tracehead = trace.prev;
   return;
 }
 val_t syntax_base___PExpr___stype(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_syntax_base___PExpr___stype, 500};
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 500, LOCATE_syntax_base___PExpr___stype};
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "stype", LOCATE_syntax_base___AType___check_conform, 500);
+  fprintf(stderr, "Deferred method %s called");
+  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_syntax_base___AType___check_conform, LOCATE_syntax_base, 500);
   nit_exit(1);
   tracehead = trace.prev;
   return NIT_NULL;
 }
+val_t syntax_base___AVardeclExpr___variable(val_t  self) {
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 506, LOCATE_syntax_base___AVardeclExpr___variable};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_syntax_base___AVardeclExpr____variable( self) /*AVardeclExpr::_variable*/;
+}
+void syntax_base___AVardeclExpr___variable__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 506, LOCATE_syntax_base___AVardeclExpr___variable__eq};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_syntax_base___AVardeclExpr____variable( self) /*AVardeclExpr::_variable*/ =  param0;
+  tracehead = trace.prev;
+  return;
+}
+val_t syntax_base___AForVardeclExpr___variable(val_t  self) {
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 511, LOCATE_syntax_base___AForVardeclExpr___variable};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_syntax_base___AForVardeclExpr____variable( self) /*AForVardeclExpr::_variable*/;
+}
+void syntax_base___AForVardeclExpr___variable__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 511, LOCATE_syntax_base___AForVardeclExpr___variable__eq};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_syntax_base___AForVardeclExpr____variable( self) /*AForVardeclExpr::_variable*/ =  param0;
+  tracehead = trace.prev;
+  return;
+}
+val_t syntax_base___AVarFormExpr___variable(val_t  self) {
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 516, LOCATE_syntax_base___AVarFormExpr___variable};
+  trace.prev = tracehead; tracehead = &trace;
+  tracehead = trace.prev;
+  return ATTR_syntax_base___AVarFormExpr____variable( self) /*AVarFormExpr::_variable*/;
+}
+void syntax_base___AVarFormExpr___variable__eq(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_syntax_base, 516, LOCATE_syntax_base___AVarFormExpr___variable__eq};
+  trace.prev = tracehead; tracehead = &trace;
+  ATTR_syntax_base___AVarFormExpr____variable( self) /*AVarFormExpr::_variable*/ =  param0;
+  tracehead = trace.prev;
+  return;
+}