Update c_src
[nit.git] / c_src / parser._sep.c
index b78fbb2..b4a98f3 100644 (file)
@@ -1,33 +1,33 @@
 /* This C file is generated by NIT to compile module parser. */
 #include "parser._sep.h"
 val_t parser___State___state(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_parser___State___state, 10};
+  struct trace_t trace = {NULL, LOCATE_parser, 10, LOCATE_parser___State___state};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return ATTR_parser___State____state( self) /*State::_state*/;
 }
 void parser___State___state__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___State___state__eq, 10};
+  struct trace_t trace = {NULL, LOCATE_parser, 10, LOCATE_parser___State___state__eq};
   trace.prev = tracehead; tracehead = &trace;
   ATTR_parser___State____state( self) /*State::_state*/ =  param0;
   tracehead = trace.prev;
   return;
 }
 val_t parser___State___nodes(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_parser___State___nodes, 13};
+  struct trace_t trace = {NULL, LOCATE_parser, 13, LOCATE_parser___State___nodes};
   trace.prev = tracehead; tracehead = &trace;
   tracehead = trace.prev;
   return ATTR_parser___State____nodes( self) /*State::_nodes*/;
 }
 void parser___State___nodes__eq(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___State___nodes__eq, 13};
+  struct trace_t trace = {NULL, LOCATE_parser, 13, LOCATE_parser___State___nodes__eq};
   trace.prev = tracehead; tracehead = &trace;
   ATTR_parser___State____nodes( self) /*State::_nodes*/ =  param0;
   tracehead = trace.prev;
   return;
 }
 void parser___State___init(val_t  self, val_t  param0, val_t  param1, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___State___init, 16};
+  struct trace_t trace = {NULL, LOCATE_parser, 16, LOCATE_parser___State___init};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
@@ -41,26 +41,26 @@ void parser___State___init(val_t  self, val_t  param0, val_t  param1, int* init_
   return;
 }
 void parser___Parser___init(val_t  self, val_t  param0, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___Parser___init, 33};
+  struct trace_t trace = {NULL, LOCATE_parser, 34, LOCATE_parser___Parser___init};
   val_t variable0;
   val_t variable1;
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Parser].i]) return;
   ATTR_parser___Parser____lexer( self) /*Parser::_lexer*/ =  variable0 /*lexer*/;
-  variable1 = NEW_array___Array___init(); /*new Array[State]*/
+  variable1 = NEW_array___Array___init(); /*new Array[E]*/
   ATTR_parser___Parser____stack( self) /*Parser::_stack*/ = variable1;
   variable1 = TAG_Int(-UNTAG_Int( TAG_Int(1)));
   ATTR_parser___Parser____stack_pos( self) /*Parser::_stack_pos*/ = variable1;
-  ((parser_tables___Parser___build_goto_table_t)CALL( self,COLOR_parser_tables___Parser___build_goto_table))( self) /*Parser::build_goto_table*/;
-  ((parser_tables___Parser___build_action_table_t)CALL( self,COLOR_parser_tables___Parser___build_action_table))( self) /*Parser::build_action_table*/;
+  ((parser_tables___ParserTable___build_goto_table_t)CALL( self,COLOR_parser_tables___ParserTable___build_goto_table))( self) /*ParserTable::build_goto_table*/;
+  ((parser_tables___ParserTable___build_action_table_t)CALL( self,COLOR_parser_tables___ParserTable___build_action_table))( self) /*ParserTable::build_action_table*/;
   ((parser___Parser___build_reduce_table_t)CALL( self,COLOR_parser___Parser___build_reduce_table))( self) /*Parser::build_reduce_table*/;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_Parser].i] = 1;
   tracehead = trace.prev;
   return;
 }
 val_t parser___Parser___go_to(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___Parser___go_to, 44};
+  struct trace_t trace = {NULL, LOCATE_parser, 45, LOCATE_parser___Parser___go_to};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -76,17 +76,17 @@ val_t parser___Parser___go_to(val_t  self, val_t  param0) {
   variable0 =  param0;
   variable2 = ((parser___Parser___state_t)CALL( self,COLOR_parser___Parser___state))( self) /*Parser::state*/;
   variable1 = variable2;
-  variable3 = ATTR_parser_tables___Parser____goto_table( self) /*Parser::_goto_table*/;
+  variable3 = ATTR_parser_tables___ParserTable____goto_table( self) /*ParserTable::_goto_table*/;
   variable4 =  variable0 /*index*/;
   variable5 = TAG_Bool(UNTAG_Int( variable4 /*index*/)>=UNTAG_Int( TAG_Int(0)));
   variable6 = variable5;
   if (UNTAG_Bool(variable6)) { /* and */
     variable6 = variable3;
-    variable6 = ATTR_array___AbstractArray____length(variable6) /*Array::_length*/;
+    variable6 = ATTR_array___AbstractArray____length(variable6) /*AbstractArray::_length*/;
     variable6 = TAG_Bool(UNTAG_Int( variable4 /*index*/)<UNTAG_Int(variable6));
   }
   variable5 = variable6;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
   variable5 = variable3;
   variable5 = ATTR_array___Array____items(variable5) /*Array::_items*/;
   variable5 = UNBOX_NativeArray(variable5)[UNTAG_Int( variable4 /*index*/)];
@@ -95,7 +95,7 @@ val_t parser___Parser___go_to(val_t  self, val_t  param0) {
   variable3 = variable5;
   variable2 = variable3;
   variable3 =  TAG_Int(1);
-  variable5 = ((array___AbstractArray___length_t)CALL( variable2 /*table*/,COLOR_abstract_collection___Collection___length))( variable2 /*table*/) /*Array::length*/;
+  variable5 = ((array___AbstractArray___length_t)CALL( variable2 /*table*/,COLOR_abstract_collection___Collection___length))( variable2 /*table*/) /*AbstractArray::length*/;
   variable5 = TAG_Int(UNTAG_Int(variable5)/UNTAG_Int( TAG_Int(2)));
   variable5 = TAG_Int(UNTAG_Int(variable5)-UNTAG_Int( TAG_Int(1)));
   variable4 = variable5;
@@ -111,11 +111,11 @@ val_t parser___Parser___go_to(val_t  self, val_t  param0) {
     variable8 = TAG_Bool(UNTAG_Int( variable7 /*index*/)>=UNTAG_Int( TAG_Int(0)));
     variable9 = variable8;
     if (UNTAG_Bool(variable9)) { /* and */
-      variable9 = ATTR_array___AbstractArray____length( variable2 /*table*/) /*Array::_length*/;
+      variable9 = ATTR_array___AbstractArray____length( variable2 /*table*/) /*AbstractArray::_length*/;
       variable9 = TAG_Bool(UNTAG_Int( variable7 /*index*/)<UNTAG_Int(variable9));
     }
     variable8 = variable9;
-    if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+    if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
     variable8 = ATTR_array___Array____items( variable2 /*table*/) /*Array::_items*/;
     variable8 = UNBOX_NativeArray(variable8)[UNTAG_Int( variable7 /*index*/)];
     goto return_label5;
@@ -130,11 +130,11 @@ val_t parser___Parser___go_to(val_t  self, val_t  param0) {
       variable8 = TAG_Bool(UNTAG_Int( variable7 /*index*/)>=UNTAG_Int( TAG_Int(0)));
       variable9 = variable8;
       if (UNTAG_Bool(variable9)) { /* and */
-        variable9 = ATTR_array___AbstractArray____length( variable2 /*table*/) /*Array::_length*/;
+        variable9 = ATTR_array___AbstractArray____length( variable2 /*table*/) /*AbstractArray::_length*/;
         variable9 = TAG_Bool(UNTAG_Int( variable7 /*index*/)<UNTAG_Int(variable9));
       }
       variable8 = variable9;
-      if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+      if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
       variable8 = ATTR_array___Array____items( variable2 /*table*/) /*Array::_items*/;
       variable8 = UNBOX_NativeArray(variable8)[UNTAG_Int( variable7 /*index*/)];
       goto return_label6;
@@ -150,11 +150,11 @@ val_t parser___Parser___go_to(val_t  self, val_t  param0) {
         variable9 = TAG_Bool(UNTAG_Int( variable8 /*index*/)>=UNTAG_Int( TAG_Int(0)));
         variable10 = variable9;
         if (UNTAG_Bool(variable10)) { /* and */
-          variable10 = ATTR_array___AbstractArray____length( variable2 /*table*/) /*Array::_length*/;
+          variable10 = ATTR_array___AbstractArray____length( variable2 /*table*/) /*AbstractArray::_length*/;
           variable10 = TAG_Bool(UNTAG_Int( variable8 /*index*/)<UNTAG_Int(variable10));
         }
         variable9 = variable10;
-        if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+        if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
         variable9 = ATTR_array___Array____items( variable2 /*table*/) /*Array::_items*/;
         variable9 = UNBOX_NativeArray(variable9)[UNTAG_Int( variable8 /*index*/)];
         goto return_label7;
@@ -171,11 +171,11 @@ val_t parser___Parser___go_to(val_t  self, val_t  param0) {
   variable6 = TAG_Bool(UNTAG_Int( variable5 /*index*/)>=UNTAG_Int( TAG_Int(0)));
   variable7 = variable6;
   if (UNTAG_Bool(variable7)) { /* and */
-    variable7 = ATTR_array___AbstractArray____length( variable2 /*table*/) /*Array::_length*/;
+    variable7 = ATTR_array___AbstractArray____length( variable2 /*table*/) /*AbstractArray::_length*/;
     variable7 = TAG_Bool(UNTAG_Int( variable5 /*index*/)<UNTAG_Int(variable7));
   }
   variable6 = variable7;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
   variable6 = ATTR_array___Array____items( variable2 /*table*/) /*Array::_items*/;
   variable6 = UNBOX_NativeArray(variable6)[UNTAG_Int( variable5 /*index*/)];
   goto return_label8;
@@ -188,7 +188,7 @@ val_t parser___Parser___go_to(val_t  self, val_t  param0) {
   return variable1;
 }
 void parser___Parser___push(val_t  self, val_t  param0, val_t  param1) {
-  struct trace_t trace = {NULL, LOCATE_parser___Parser___push, 68};
+  struct trace_t trace = {NULL, LOCATE_parser, 69, LOCATE_parser___Parser___push};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -205,7 +205,7 @@ void parser___Parser___push(val_t  self, val_t  param0, val_t  param1) {
   variable2 = variable3;
   ATTR_parser___Parser____stack_pos( self) /*Parser::_stack_pos*/ =  variable2 /*pos*/;
   variable3 = ATTR_parser___Parser____stack( self) /*Parser::_stack*/;
-  variable3 = ((array___AbstractArray___length_t)CALL(variable3,COLOR_abstract_collection___Collection___length))(variable3) /*Array::length*/;
+  variable3 = ((array___AbstractArray___length_t)CALL(variable3,COLOR_abstract_collection___Collection___length))(variable3) /*AbstractArray::length*/;
   variable3 = TAG_Bool(UNTAG_Int( variable2 /*pos*/)<UNTAG_Int(variable3));
   if (UNTAG_Bool(variable3)) { /*if*/
     variable4 = ATTR_parser___Parser____stack( self) /*Parser::_stack*/;
@@ -214,11 +214,11 @@ void parser___Parser___push(val_t  self, val_t  param0, val_t  param1) {
     variable7 = variable6;
     if (UNTAG_Bool(variable7)) { /* and */
       variable7 = variable4;
-      variable7 = ATTR_array___AbstractArray____length(variable7) /*Array::_length*/;
+      variable7 = ATTR_array___AbstractArray____length(variable7) /*AbstractArray::_length*/;
       variable7 = TAG_Bool(UNTAG_Int( variable5 /*index*/)<UNTAG_Int(variable7));
     }
     variable6 = variable7;
-    if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+    if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
     variable6 = variable4;
     variable6 = ATTR_array___Array____items(variable6) /*Array::_items*/;
     variable6 = UNBOX_NativeArray(variable6)[UNTAG_Int( variable5 /*index*/)];
@@ -231,13 +231,13 @@ void parser___Parser___push(val_t  self, val_t  param0, val_t  param1) {
   } else { /*if*/
     variable3 = ATTR_parser___Parser____stack( self) /*Parser::_stack*/;
     variable4 = NEW_parser___State___init( variable0 /*numstate*/,  variable1 /*list_node*/); /*new State*/
-    ((array___AbstractArray___push_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___push))(variable3, variable4) /*Array::push*/;
+    ((array___AbstractArray___push_t)CALL(variable3,COLOR_abstract_collection___IndexedCollection___push))(variable3, variable4) /*AbstractArray::push*/;
   }
   tracehead = trace.prev;
   return;
 }
 val_t parser___Parser___state(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_parser___Parser___state, 82};
+  struct trace_t trace = {NULL, LOCATE_parser, 83, LOCATE_parser___Parser___state};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -251,11 +251,11 @@ val_t parser___Parser___state(val_t  self) {
   variable4 = variable3;
   if (UNTAG_Bool(variable4)) { /* and */
     variable4 = variable0;
-    variable4 = ATTR_array___AbstractArray____length(variable4) /*Array::_length*/;
+    variable4 = ATTR_array___AbstractArray____length(variable4) /*AbstractArray::_length*/;
     variable4 = TAG_Bool(UNTAG_Int( variable2 /*index*/)<UNTAG_Int(variable4));
   }
   variable3 = variable4;
-  if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+  if (!UNTAG_Bool(variable3)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
   variable3 = variable0;
   variable3 = ATTR_array___Array____items(variable3) /*Array::_items*/;
   variable3 = UNBOX_NativeArray(variable3)[UNTAG_Int( variable2 /*index*/)];
@@ -269,7 +269,7 @@ val_t parser___Parser___state(val_t  self) {
   return variable0;
 }
 val_t parser___Parser___pop(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_parser___Parser___pop, 88};
+  struct trace_t trace = {NULL, LOCATE_parser, 89, LOCATE_parser___Parser___pop};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -284,11 +284,11 @@ val_t parser___Parser___pop(val_t  self) {
   variable5 = variable4;
   if (UNTAG_Bool(variable5)) { /* and */
     variable5 = variable1;
-    variable5 = ATTR_array___AbstractArray____length(variable5) /*Array::_length*/;
+    variable5 = ATTR_array___AbstractArray____length(variable5) /*AbstractArray::_length*/;
     variable5 = TAG_Bool(UNTAG_Int( variable3 /*index*/)<UNTAG_Int(variable5));
   }
   variable4 = variable5;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
   variable4 = variable1;
   variable4 = ATTR_array___Array____items(variable4) /*Array::_items*/;
   variable4 = UNBOX_NativeArray(variable4)[UNTAG_Int( variable3 /*index*/)];
@@ -307,7 +307,7 @@ val_t parser___Parser___pop(val_t  self) {
   return variable0;
 }
 val_t parser___Parser___parse(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_parser___Parser___parse, 96};
+  struct trace_t trace = {NULL, LOCATE_parser, 97, LOCATE_parser___Parser___parse};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -342,25 +342,25 @@ val_t parser___Parser___parse(val_t  self) {
     variable5 = TAG_Bool(( variable2 /*token*/==NIT_NULL) || VAL_ISA( variable2 /*token*/, COLOR_PError, ID_PError)) /*cast PError*/;
     if (UNTAG_Bool(variable5)) { /*if*/
       variable5 = TAG_Bool(( variable2 /*token*/==NIT_NULL) || VAL_ISA( variable2 /*token*/, COLOR_PError, ID_PError)) /*cast PError*/;
-      if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___Parser___parse, 109); nit_exit(1);}
+      if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___Parser___parse, LOCATE_parser, 110); nit_exit(1);}
       variable5 = NEW_parser_prod___Start___init( NIT_NULL /*null*/,  variable2 /*token*/); /*new Start*/
       variable0 = variable5;
       goto return_label15;
     }
     variable6 = ((lexer___Token___parser_index_t)CALL( variable2 /*token*/,COLOR_lexer___Token___parser_index))( variable2 /*token*/) /*Token::parser_index*/;
     variable5 = variable6;
-    variable7 = ATTR_parser_tables___Parser____action_table( self) /*Parser::_action_table*/;
+    variable7 = ATTR_parser_tables___ParserTable____action_table( self) /*ParserTable::_action_table*/;
     variable8 = ((parser___Parser___state_t)CALL( self,COLOR_parser___Parser___state))( self) /*Parser::state*/;
     variable9 = variable8;
     variable10 = TAG_Bool(UNTAG_Int( variable9 /*index*/)>=UNTAG_Int( TAG_Int(0)));
     variable11 = variable10;
     if (UNTAG_Bool(variable11)) { /* and */
       variable11 = variable7;
-      variable11 = ATTR_array___AbstractArray____length(variable11) /*Array::_length*/;
+      variable11 = ATTR_array___AbstractArray____length(variable11) /*AbstractArray::_length*/;
       variable11 = TAG_Bool(UNTAG_Int( variable9 /*index*/)<UNTAG_Int(variable11));
     }
     variable10 = variable11;
-    if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+    if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
     variable10 = variable7;
     variable10 = ATTR_array___Array____items(variable10) /*Array::_items*/;
     variable10 = UNBOX_NativeArray(variable10)[UNTAG_Int( variable9 /*index*/)];
@@ -372,11 +372,11 @@ val_t parser___Parser___parse(val_t  self) {
     variable9 = TAG_Bool(UNTAG_Int( variable8 /*index*/)>=UNTAG_Int( TAG_Int(0)));
     variable10 = variable9;
     if (UNTAG_Bool(variable10)) { /* and */
-      variable10 = ATTR_array___AbstractArray____length( variable6 /*table*/) /*Array::_length*/;
+      variable10 = ATTR_array___AbstractArray____length( variable6 /*table*/) /*AbstractArray::_length*/;
       variable10 = TAG_Bool(UNTAG_Int( variable8 /*index*/)<UNTAG_Int(variable10));
     }
     variable9 = variable10;
-    if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+    if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
     variable9 = ATTR_array___Array____items( variable6 /*table*/) /*Array::_items*/;
     variable9 = UNBOX_NativeArray(variable9)[UNTAG_Int( variable8 /*index*/)];
     goto return_label18;
@@ -387,11 +387,11 @@ val_t parser___Parser___parse(val_t  self) {
     variable10 = TAG_Bool(UNTAG_Int( variable9 /*index*/)>=UNTAG_Int( TAG_Int(0)));
     variable11 = variable10;
     if (UNTAG_Bool(variable11)) { /* and */
-      variable11 = ATTR_array___AbstractArray____length( variable6 /*table*/) /*Array::_length*/;
+      variable11 = ATTR_array___AbstractArray____length( variable6 /*table*/) /*AbstractArray::_length*/;
       variable11 = TAG_Bool(UNTAG_Int( variable9 /*index*/)<UNTAG_Int(variable11));
     }
     variable10 = variable11;
-    if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+    if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
     variable10 = ATTR_array___Array____items( variable6 /*table*/) /*Array::_items*/;
     variable10 = UNBOX_NativeArray(variable10)[UNTAG_Int( variable9 /*index*/)];
     goto return_label19;
@@ -399,7 +399,7 @@ val_t parser___Parser___parse(val_t  self) {
     variable9 = variable10;
     variable8 = variable9;
     variable9 =  TAG_Int(1);
-    variable11 = ((array___AbstractArray___length_t)CALL( variable6 /*table*/,COLOR_abstract_collection___Collection___length))( variable6 /*table*/) /*Array::length*/;
+    variable11 = ((array___AbstractArray___length_t)CALL( variable6 /*table*/,COLOR_abstract_collection___Collection___length))( variable6 /*table*/) /*AbstractArray::length*/;
     variable11 = TAG_Int(UNTAG_Int(variable11)/UNTAG_Int( TAG_Int(3)));
     variable11 = TAG_Int(UNTAG_Int(variable11)-UNTAG_Int( TAG_Int(1)));
     variable10 = variable11;
@@ -415,11 +415,11 @@ val_t parser___Parser___parse(val_t  self) {
       variable14 = TAG_Bool(UNTAG_Int( variable13 /*index*/)>=UNTAG_Int( TAG_Int(0)));
       variable15 = variable14;
       if (UNTAG_Bool(variable15)) { /* and */
-        variable15 = ATTR_array___AbstractArray____length( variable6 /*table*/) /*Array::_length*/;
+        variable15 = ATTR_array___AbstractArray____length( variable6 /*table*/) /*AbstractArray::_length*/;
         variable15 = TAG_Bool(UNTAG_Int( variable13 /*index*/)<UNTAG_Int(variable15));
       }
       variable14 = variable15;
-      if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+      if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
       variable14 = ATTR_array___Array____items( variable6 /*table*/) /*Array::_items*/;
       variable14 = UNBOX_NativeArray(variable14)[UNTAG_Int( variable13 /*index*/)];
       goto return_label21;
@@ -434,11 +434,11 @@ val_t parser___Parser___parse(val_t  self) {
         variable14 = TAG_Bool(UNTAG_Int( variable13 /*index*/)>=UNTAG_Int( TAG_Int(0)));
         variable15 = variable14;
         if (UNTAG_Bool(variable15)) { /* and */
-          variable15 = ATTR_array___AbstractArray____length( variable6 /*table*/) /*Array::_length*/;
+          variable15 = ATTR_array___AbstractArray____length( variable6 /*table*/) /*AbstractArray::_length*/;
           variable15 = TAG_Bool(UNTAG_Int( variable13 /*index*/)<UNTAG_Int(variable15));
         }
         variable14 = variable15;
-        if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+        if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
         variable14 = ATTR_array___Array____items( variable6 /*table*/) /*Array::_items*/;
         variable14 = UNBOX_NativeArray(variable14)[UNTAG_Int( variable13 /*index*/)];
         goto return_label22;
@@ -454,11 +454,11 @@ val_t parser___Parser___parse(val_t  self) {
           variable15 = TAG_Bool(UNTAG_Int( variable14 /*index*/)>=UNTAG_Int( TAG_Int(0)));
           variable16 = variable15;
           if (UNTAG_Bool(variable16)) { /* and */
-            variable16 = ATTR_array___AbstractArray____length( variable6 /*table*/) /*Array::_length*/;
+            variable16 = ATTR_array___AbstractArray____length( variable6 /*table*/) /*AbstractArray::_length*/;
             variable16 = TAG_Bool(UNTAG_Int( variable14 /*index*/)<UNTAG_Int(variable16));
           }
           variable15 = variable16;
-          if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+          if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
           variable15 = ATTR_array___Array____items( variable6 /*table*/) /*Array::_items*/;
           variable15 = UNBOX_NativeArray(variable15)[UNTAG_Int( variable14 /*index*/)];
           goto return_label23;
@@ -470,11 +470,11 @@ val_t parser___Parser___parse(val_t  self) {
           variable15 = TAG_Bool(UNTAG_Int( variable14 /*index*/)>=UNTAG_Int( TAG_Int(0)));
           variable16 = variable15;
           if (UNTAG_Bool(variable16)) { /* and */
-            variable16 = ATTR_array___AbstractArray____length( variable6 /*table*/) /*Array::_length*/;
+            variable16 = ATTR_array___AbstractArray____length( variable6 /*table*/) /*AbstractArray::_length*/;
             variable16 = TAG_Bool(UNTAG_Int( variable14 /*index*/)<UNTAG_Int(variable16));
           }
           variable15 = variable16;
-          if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+          if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
           variable15 = ATTR_array___Array____items( variable6 /*table*/) /*Array::_items*/;
           variable15 = UNBOX_NativeArray(variable15)[UNTAG_Int( variable14 /*index*/)];
           goto return_label24;
@@ -501,11 +501,11 @@ val_t parser___Parser___parse(val_t  self) {
         variable14 = variable13;
         if (UNTAG_Bool(variable14)) { /* and */
           variable14 = variable11;
-          variable14 = ATTR_array___AbstractArray____length(variable14) /*Array::_length*/;
+          variable14 = ATTR_array___AbstractArray____length(variable14) /*AbstractArray::_length*/;
           variable14 = TAG_Bool(UNTAG_Int( variable12 /*index*/)<UNTAG_Int(variable14));
         }
         variable13 = variable14;
-        if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+        if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
         variable13 = variable11;
         variable13 = ATTR_array___Array____items(variable13) /*Array::_items*/;
         variable13 = UNBOX_NativeArray(variable13)[UNTAG_Int( variable12 /*index*/)];
@@ -519,11 +519,11 @@ val_t parser___Parser___parse(val_t  self) {
           variable12 = ((lexer___Lexer___next_t)CALL( variable1 /*lexer*/,COLOR_lexer___Lexer___next))( variable1 /*lexer*/) /*Lexer::next*/;
           variable11 = variable12;
           variable12 = TAG_Bool(( variable11 /*node2*/==NIT_NULL) || VAL_ISA( variable11 /*node2*/, COLOR_EOF, ID_EOF)) /*cast EOF*/;
-          if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_array___Array_____bra, 142); nit_exit(1);}
+          if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 143); nit_exit(1);}
           variable13 = ((parser___Parser___pop_t)CALL( self,COLOR_parser___Parser___pop))( self) /*Parser::pop*/;
           variable12 = variable13;
           variable13 = TAG_Bool(( variable12 /*node1*/==NIT_NULL) || VAL_ISA( variable12 /*node1*/, COLOR_PModule, ID_PModule)) /*cast PModule*/;
-          if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_array___Array_____bra, 144); nit_exit(1);}
+          if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 145); nit_exit(1);}
           variable14 = NEW_parser_prod___Start___init( variable12 /*node1*/,  variable11 /*node2*/); /*new Start*/
           variable13 = variable14;
           variable14 = NEW_parser___SearchTokensVisitor___init(); /*new SearchTokensVisitor*/
@@ -534,18 +534,18 @@ val_t parser___Parser___parse(val_t  self) {
           variable11 = TAG_Bool(( variable7 /*action_type*/)==( TAG_Int(3)));
           if (UNTAG_Bool(variable11)) { /*if*/
             variable12 = ((lexer___Lexer___filename_t)CALL( variable1 /*lexer*/,COLOR_lexer___Lexer___filename))( variable1 /*lexer*/) /*Lexer::filename*/;
-            variable13 = ((parser_tables___Parser___error_messages_t)CALL( self,COLOR_parser_tables___Parser___error_messages))( self) /*Parser::error_messages*/;
-            variable14 = ((parser_tables___Parser___errors_t)CALL( self,COLOR_parser_tables___Parser___errors))( self) /*Parser::errors*/;
+            variable13 = ((parser_tables___ParserTable___error_messages_t)CALL( self,COLOR_parser_tables___ParserTable___error_messages))( self) /*ParserTable::error_messages*/;
+            variable14 = ((parser_tables___ParserTable___errors_t)CALL( self,COLOR_parser_tables___ParserTable___errors))( self) /*ParserTable::errors*/;
             variable15 =  variable8 /*action_value*/;
             variable16 = TAG_Bool(UNTAG_Int( variable15 /*index*/)>=UNTAG_Int( TAG_Int(0)));
             variable17 = variable16;
             if (UNTAG_Bool(variable17)) { /* and */
               variable17 = variable14;
-              variable17 = ATTR_array___AbstractArray____length(variable17) /*Array::_length*/;
+              variable17 = ATTR_array___AbstractArray____length(variable17) /*AbstractArray::_length*/;
               variable17 = TAG_Bool(UNTAG_Int( variable15 /*index*/)<UNTAG_Int(variable17));
             }
             variable16 = variable17;
-            if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+            if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
             variable16 = variable14;
             variable16 = ATTR_array___Array____items(variable16) /*Array::_items*/;
             variable16 = UNBOX_NativeArray(variable16)[UNTAG_Int( variable15 /*index*/)];
@@ -557,11 +557,11 @@ val_t parser___Parser___parse(val_t  self) {
             variable17 = variable16;
             if (UNTAG_Bool(variable17)) { /* and */
               variable17 = variable13;
-              variable17 = ATTR_array___AbstractArray____length(variable17) /*Array::_length*/;
+              variable17 = ATTR_array___AbstractArray____length(variable17) /*AbstractArray::_length*/;
               variable17 = TAG_Bool(UNTAG_Int( variable15 /*index*/)<UNTAG_Int(variable17));
             }
             variable16 = variable17;
-            if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", " 'index' ", LOCATE_array___Array_____bra, 229); nit_exit(1);}
+            if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", " 'index' "); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_array___Array_____bra, LOCATE_parser, 229); nit_exit(1);}
             variable16 = variable13;
             variable16 = ATTR_array___Array____items(variable16) /*Array::_items*/;
             variable16 = UNBOX_NativeArray(variable16)[UNTAG_Int( variable15 /*index*/)];
@@ -589,7 +589,7 @@ val_t parser___Parser___parse(val_t  self) {
   return variable0;
 }
 void parser___Parser___build_reduce_table(val_t  self) {
-  struct trace_t trace = {NULL, LOCATE_parser___Parser___build_reduce_table, 158};
+  struct trace_t trace = {NULL, LOCATE_parser, 159, LOCATE_parser___Parser___build_reduce_table};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -1160,1154 +1160,1166 @@ void parser___Parser___build_reduce_table(val_t  self) {
   val_t variable567;
   val_t variable568;
   val_t variable569;
+  val_t variable570;
+  val_t variable571;
+  val_t variable572;
+  val_t variable573;
   trace.prev = tracehead; tracehead = &trace;
-  variable0 = NEW_array___Array___with_capacity(TAG_Int(569)); /*new Array[ReduceAction]*/
+  variable0 = NEW_array___Array___with_capacity(TAG_Int(573)); /*new Array[E]*/
   variable1 = NEW_parser___ReduceAction0___init(); /*new ReduceAction0*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable1) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable1) /*AbstractArray::add*/;
   variable2 = NEW_parser___ReduceAction1___init(); /*new ReduceAction1*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable2) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable2) /*AbstractArray::add*/;
   variable3 = NEW_parser___ReduceAction2___init(); /*new ReduceAction2*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable3) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable3) /*AbstractArray::add*/;
   variable4 = NEW_parser___ReduceAction3___init(); /*new ReduceAction3*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable4) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable4) /*AbstractArray::add*/;
   variable5 = NEW_parser___ReduceAction4___init(); /*new ReduceAction4*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable5) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable5) /*AbstractArray::add*/;
   variable6 = NEW_parser___ReduceAction5___init(); /*new ReduceAction5*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable6) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable6) /*AbstractArray::add*/;
   variable7 = NEW_parser___ReduceAction6___init(); /*new ReduceAction6*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable7) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable7) /*AbstractArray::add*/;
   variable8 = NEW_parser___ReduceAction7___init(); /*new ReduceAction7*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable8) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable8) /*AbstractArray::add*/;
   variable9 = NEW_parser___ReduceAction8___init(); /*new ReduceAction8*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable9) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable9) /*AbstractArray::add*/;
   variable10 = NEW_parser___ReduceAction9___init(); /*new ReduceAction9*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable10) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable10) /*AbstractArray::add*/;
   variable11 = NEW_parser___ReduceAction10___init(); /*new ReduceAction10*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable11) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable11) /*AbstractArray::add*/;
   variable12 = NEW_parser___ReduceAction11___init(); /*new ReduceAction11*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable12) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable12) /*AbstractArray::add*/;
   variable13 = NEW_parser___ReduceAction12___init(); /*new ReduceAction12*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable13) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable13) /*AbstractArray::add*/;
   variable14 = NEW_parser___ReduceAction13___init(); /*new ReduceAction13*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable14) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable14) /*AbstractArray::add*/;
   variable15 = NEW_parser___ReduceAction14___init(); /*new ReduceAction14*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable15) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable15) /*AbstractArray::add*/;
   variable16 = NEW_parser___ReduceAction15___init(); /*new ReduceAction15*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable16) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable16) /*AbstractArray::add*/;
   variable17 = NEW_parser___ReduceAction16___init(); /*new ReduceAction16*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable17) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable17) /*AbstractArray::add*/;
   variable18 = NEW_parser___ReduceAction17___init(); /*new ReduceAction17*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable18) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable18) /*AbstractArray::add*/;
   variable19 = NEW_parser___ReduceAction18___init(); /*new ReduceAction18*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable19) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable19) /*AbstractArray::add*/;
   variable20 = NEW_parser___ReduceAction19___init(); /*new ReduceAction19*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable20) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable20) /*AbstractArray::add*/;
   variable21 = NEW_parser___ReduceAction20___init(); /*new ReduceAction20*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable21) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable21) /*AbstractArray::add*/;
   variable22 = NEW_parser___ReduceAction21___init(); /*new ReduceAction21*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable22) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable22) /*AbstractArray::add*/;
   variable23 = NEW_parser___ReduceAction22___init(); /*new ReduceAction22*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable23) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable23) /*AbstractArray::add*/;
   variable24 = NEW_parser___ReduceAction23___init(); /*new ReduceAction23*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable24) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable24) /*AbstractArray::add*/;
   variable25 = NEW_parser___ReduceAction24___init(); /*new ReduceAction24*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable25) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable25) /*AbstractArray::add*/;
   variable26 = NEW_parser___ReduceAction25___init(); /*new ReduceAction25*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable26) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable26) /*AbstractArray::add*/;
   variable27 = NEW_parser___ReduceAction26___init(); /*new ReduceAction26*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable27) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable27) /*AbstractArray::add*/;
   variable28 = NEW_parser___ReduceAction27___init(); /*new ReduceAction27*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable28) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable28) /*AbstractArray::add*/;
   variable29 = NEW_parser___ReduceAction28___init(); /*new ReduceAction28*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable29) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable29) /*AbstractArray::add*/;
   variable30 = NEW_parser___ReduceAction29___init(); /*new ReduceAction29*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable30) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable30) /*AbstractArray::add*/;
   variable31 = NEW_parser___ReduceAction30___init(); /*new ReduceAction30*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable31) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable31) /*AbstractArray::add*/;
   variable32 = NEW_parser___ReduceAction31___init(); /*new ReduceAction31*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable32) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable32) /*AbstractArray::add*/;
   variable33 = NEW_parser___ReduceAction32___init(); /*new ReduceAction32*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable33) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable33) /*AbstractArray::add*/;
   variable34 = NEW_parser___ReduceAction33___init(); /*new ReduceAction33*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable34) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable34) /*AbstractArray::add*/;
   variable35 = NEW_parser___ReduceAction34___init(); /*new ReduceAction34*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable35) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable35) /*AbstractArray::add*/;
   variable36 = NEW_parser___ReduceAction35___init(); /*new ReduceAction35*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable36) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable36) /*AbstractArray::add*/;
   variable37 = NEW_parser___ReduceAction36___init(); /*new ReduceAction36*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable37) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable37) /*AbstractArray::add*/;
   variable38 = NEW_parser___ReduceAction37___init(); /*new ReduceAction37*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable38) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable38) /*AbstractArray::add*/;
   variable39 = NEW_parser___ReduceAction38___init(); /*new ReduceAction38*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable39) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable39) /*AbstractArray::add*/;
   variable40 = NEW_parser___ReduceAction39___init(); /*new ReduceAction39*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable40) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable40) /*AbstractArray::add*/;
   variable41 = NEW_parser___ReduceAction40___init(); /*new ReduceAction40*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable41) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable41) /*AbstractArray::add*/;
   variable42 = NEW_parser___ReduceAction41___init(); /*new ReduceAction41*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable42) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable42) /*AbstractArray::add*/;
   variable43 = NEW_parser___ReduceAction42___init(); /*new ReduceAction42*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable43) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable43) /*AbstractArray::add*/;
   variable44 = NEW_parser___ReduceAction43___init(); /*new ReduceAction43*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable44) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable44) /*AbstractArray::add*/;
   variable45 = NEW_parser___ReduceAction44___init(); /*new ReduceAction44*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable45) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable45) /*AbstractArray::add*/;
   variable46 = NEW_parser___ReduceAction45___init(); /*new ReduceAction45*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable46) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable46) /*AbstractArray::add*/;
   variable47 = NEW_parser___ReduceAction46___init(); /*new ReduceAction46*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable47) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable47) /*AbstractArray::add*/;
   variable48 = NEW_parser___ReduceAction47___init(); /*new ReduceAction47*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable48) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable48) /*AbstractArray::add*/;
   variable49 = NEW_parser___ReduceAction48___init(); /*new ReduceAction48*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable49) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable49) /*AbstractArray::add*/;
   variable50 = NEW_parser___ReduceAction49___init(); /*new ReduceAction49*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable50) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable50) /*AbstractArray::add*/;
   variable51 = NEW_parser___ReduceAction50___init(); /*new ReduceAction50*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable51) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable51) /*AbstractArray::add*/;
   variable52 = NEW_parser___ReduceAction51___init(); /*new ReduceAction51*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable52) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable52) /*AbstractArray::add*/;
   variable53 = NEW_parser___ReduceAction52___init(); /*new ReduceAction52*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable53) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable53) /*AbstractArray::add*/;
   variable54 = NEW_parser___ReduceAction53___init(); /*new ReduceAction53*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable54) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable54) /*AbstractArray::add*/;
   variable55 = NEW_parser___ReduceAction54___init(); /*new ReduceAction54*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable55) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable55) /*AbstractArray::add*/;
   variable56 = NEW_parser___ReduceAction55___init(); /*new ReduceAction55*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable56) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable56) /*AbstractArray::add*/;
   variable57 = NEW_parser___ReduceAction56___init(); /*new ReduceAction56*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable57) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable57) /*AbstractArray::add*/;
   variable58 = NEW_parser___ReduceAction57___init(); /*new ReduceAction57*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable58) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable58) /*AbstractArray::add*/;
   variable59 = NEW_parser___ReduceAction58___init(); /*new ReduceAction58*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable59) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable59) /*AbstractArray::add*/;
   variable60 = NEW_parser___ReduceAction59___init(); /*new ReduceAction59*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable60) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable60) /*AbstractArray::add*/;
   variable61 = NEW_parser___ReduceAction60___init(); /*new ReduceAction60*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable61) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable61) /*AbstractArray::add*/;
   variable62 = NEW_parser___ReduceAction61___init(); /*new ReduceAction61*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable62) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable62) /*AbstractArray::add*/;
   variable63 = NEW_parser___ReduceAction62___init(); /*new ReduceAction62*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable63) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable63) /*AbstractArray::add*/;
   variable64 = NEW_parser___ReduceAction63___init(); /*new ReduceAction63*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable64) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable64) /*AbstractArray::add*/;
   variable65 = NEW_parser___ReduceAction64___init(); /*new ReduceAction64*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable65) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable65) /*AbstractArray::add*/;
   variable66 = NEW_parser___ReduceAction65___init(); /*new ReduceAction65*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable66) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable66) /*AbstractArray::add*/;
   variable67 = NEW_parser___ReduceAction66___init(); /*new ReduceAction66*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable67) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable67) /*AbstractArray::add*/;
   variable68 = NEW_parser___ReduceAction67___init(); /*new ReduceAction67*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable68) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable68) /*AbstractArray::add*/;
   variable69 = NEW_parser___ReduceAction68___init(); /*new ReduceAction68*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable69) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable69) /*AbstractArray::add*/;
   variable70 = NEW_parser___ReduceAction69___init(); /*new ReduceAction69*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable70) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable70) /*AbstractArray::add*/;
   variable71 = NEW_parser___ReduceAction70___init(); /*new ReduceAction70*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable71) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable71) /*AbstractArray::add*/;
   variable72 = NEW_parser___ReduceAction71___init(); /*new ReduceAction71*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable72) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable72) /*AbstractArray::add*/;
   variable73 = NEW_parser___ReduceAction72___init(); /*new ReduceAction72*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable73) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable73) /*AbstractArray::add*/;
   variable74 = NEW_parser___ReduceAction73___init(); /*new ReduceAction73*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable74) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable74) /*AbstractArray::add*/;
   variable75 = NEW_parser___ReduceAction74___init(); /*new ReduceAction74*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable75) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable75) /*AbstractArray::add*/;
   variable76 = NEW_parser___ReduceAction75___init(); /*new ReduceAction75*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable76) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable76) /*AbstractArray::add*/;
   variable77 = NEW_parser___ReduceAction76___init(); /*new ReduceAction76*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable77) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable77) /*AbstractArray::add*/;
   variable78 = NEW_parser___ReduceAction77___init(); /*new ReduceAction77*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable78) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable78) /*AbstractArray::add*/;
   variable79 = NEW_parser___ReduceAction78___init(); /*new ReduceAction78*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable79) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable79) /*AbstractArray::add*/;
   variable80 = NEW_parser___ReduceAction79___init(); /*new ReduceAction79*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable80) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable80) /*AbstractArray::add*/;
   variable81 = NEW_parser___ReduceAction80___init(); /*new ReduceAction80*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable81) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable81) /*AbstractArray::add*/;
   variable82 = NEW_parser___ReduceAction81___init(); /*new ReduceAction81*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable82) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable82) /*AbstractArray::add*/;
   variable83 = NEW_parser___ReduceAction82___init(); /*new ReduceAction82*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable83) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable83) /*AbstractArray::add*/;
   variable84 = NEW_parser___ReduceAction83___init(); /*new ReduceAction83*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable84) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable84) /*AbstractArray::add*/;
   variable85 = NEW_parser___ReduceAction84___init(); /*new ReduceAction84*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable85) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable85) /*AbstractArray::add*/;
   variable86 = NEW_parser___ReduceAction85___init(); /*new ReduceAction85*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable86) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable86) /*AbstractArray::add*/;
   variable87 = NEW_parser___ReduceAction86___init(); /*new ReduceAction86*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable87) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable87) /*AbstractArray::add*/;
   variable88 = NEW_parser___ReduceAction87___init(); /*new ReduceAction87*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable88) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable88) /*AbstractArray::add*/;
   variable89 = NEW_parser___ReduceAction88___init(); /*new ReduceAction88*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable89) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable89) /*AbstractArray::add*/;
   variable90 = NEW_parser___ReduceAction89___init(); /*new ReduceAction89*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable90) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable90) /*AbstractArray::add*/;
   variable91 = NEW_parser___ReduceAction90___init(); /*new ReduceAction90*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable91) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable91) /*AbstractArray::add*/;
   variable92 = NEW_parser___ReduceAction91___init(); /*new ReduceAction91*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable92) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable92) /*AbstractArray::add*/;
   variable93 = NEW_parser___ReduceAction92___init(); /*new ReduceAction92*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable93) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable93) /*AbstractArray::add*/;
   variable94 = NEW_parser___ReduceAction93___init(); /*new ReduceAction93*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable94) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable94) /*AbstractArray::add*/;
   variable95 = NEW_parser___ReduceAction94___init(); /*new ReduceAction94*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable95) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable95) /*AbstractArray::add*/;
   variable96 = NEW_parser___ReduceAction95___init(); /*new ReduceAction95*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable96) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable96) /*AbstractArray::add*/;
   variable97 = NEW_parser___ReduceAction96___init(); /*new ReduceAction96*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable97) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable97) /*AbstractArray::add*/;
   variable98 = NEW_parser___ReduceAction97___init(); /*new ReduceAction97*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable98) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable98) /*AbstractArray::add*/;
   variable99 = NEW_parser___ReduceAction98___init(); /*new ReduceAction98*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable99) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable99) /*AbstractArray::add*/;
   variable100 = NEW_parser___ReduceAction99___init(); /*new ReduceAction99*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable100) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable100) /*AbstractArray::add*/;
   variable101 = NEW_parser___ReduceAction100___init(); /*new ReduceAction100*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable101) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable101) /*AbstractArray::add*/;
   variable102 = NEW_parser___ReduceAction101___init(); /*new ReduceAction101*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable102) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable102) /*AbstractArray::add*/;
   variable103 = NEW_parser___ReduceAction102___init(); /*new ReduceAction102*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable103) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable103) /*AbstractArray::add*/;
   variable104 = NEW_parser___ReduceAction103___init(); /*new ReduceAction103*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable104) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable104) /*AbstractArray::add*/;
   variable105 = NEW_parser___ReduceAction104___init(); /*new ReduceAction104*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable105) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable105) /*AbstractArray::add*/;
   variable106 = NEW_parser___ReduceAction105___init(); /*new ReduceAction105*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable106) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable106) /*AbstractArray::add*/;
   variable107 = NEW_parser___ReduceAction106___init(); /*new ReduceAction106*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable107) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable107) /*AbstractArray::add*/;
   variable108 = NEW_parser___ReduceAction107___init(); /*new ReduceAction107*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable108) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable108) /*AbstractArray::add*/;
   variable109 = NEW_parser___ReduceAction108___init(); /*new ReduceAction108*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable109) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable109) /*AbstractArray::add*/;
   variable110 = NEW_parser___ReduceAction109___init(); /*new ReduceAction109*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable110) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable110) /*AbstractArray::add*/;
   variable111 = NEW_parser___ReduceAction110___init(); /*new ReduceAction110*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable111) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable111) /*AbstractArray::add*/;
   variable112 = NEW_parser___ReduceAction111___init(); /*new ReduceAction111*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable112) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable112) /*AbstractArray::add*/;
   variable113 = NEW_parser___ReduceAction112___init(); /*new ReduceAction112*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable113) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable113) /*AbstractArray::add*/;
   variable114 = NEW_parser___ReduceAction113___init(); /*new ReduceAction113*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable114) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable114) /*AbstractArray::add*/;
   variable115 = NEW_parser___ReduceAction114___init(); /*new ReduceAction114*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable115) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable115) /*AbstractArray::add*/;
   variable116 = NEW_parser___ReduceAction115___init(); /*new ReduceAction115*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable116) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable116) /*AbstractArray::add*/;
   variable117 = NEW_parser___ReduceAction116___init(); /*new ReduceAction116*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable117) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable117) /*AbstractArray::add*/;
   variable118 = NEW_parser___ReduceAction117___init(); /*new ReduceAction117*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable118) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable118) /*AbstractArray::add*/;
   variable119 = NEW_parser___ReduceAction118___init(); /*new ReduceAction118*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable119) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable119) /*AbstractArray::add*/;
   variable120 = NEW_parser___ReduceAction119___init(); /*new ReduceAction119*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable120) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable120) /*AbstractArray::add*/;
   variable121 = NEW_parser___ReduceAction120___init(); /*new ReduceAction120*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable121) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable121) /*AbstractArray::add*/;
   variable122 = NEW_parser___ReduceAction121___init(); /*new ReduceAction121*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable122) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable122) /*AbstractArray::add*/;
   variable123 = NEW_parser___ReduceAction122___init(); /*new ReduceAction122*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable123) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable123) /*AbstractArray::add*/;
   variable124 = NEW_parser___ReduceAction123___init(); /*new ReduceAction123*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable124) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable124) /*AbstractArray::add*/;
   variable125 = NEW_parser___ReduceAction124___init(); /*new ReduceAction124*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable125) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable125) /*AbstractArray::add*/;
   variable126 = NEW_parser___ReduceAction125___init(); /*new ReduceAction125*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable126) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable126) /*AbstractArray::add*/;
   variable127 = NEW_parser___ReduceAction126___init(); /*new ReduceAction126*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable127) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable127) /*AbstractArray::add*/;
   variable128 = NEW_parser___ReduceAction127___init(); /*new ReduceAction127*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable128) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable128) /*AbstractArray::add*/;
   variable129 = NEW_parser___ReduceAction128___init(); /*new ReduceAction128*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable129) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable129) /*AbstractArray::add*/;
   variable130 = NEW_parser___ReduceAction129___init(); /*new ReduceAction129*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable130) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable130) /*AbstractArray::add*/;
   variable131 = NEW_parser___ReduceAction130___init(); /*new ReduceAction130*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable131) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable131) /*AbstractArray::add*/;
   variable132 = NEW_parser___ReduceAction131___init(); /*new ReduceAction131*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable132) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable132) /*AbstractArray::add*/;
   variable133 = NEW_parser___ReduceAction132___init(); /*new ReduceAction132*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable133) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable133) /*AbstractArray::add*/;
   variable134 = NEW_parser___ReduceAction133___init(); /*new ReduceAction133*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable134) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable134) /*AbstractArray::add*/;
   variable135 = NEW_parser___ReduceAction134___init(); /*new ReduceAction134*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable135) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable135) /*AbstractArray::add*/;
   variable136 = NEW_parser___ReduceAction135___init(); /*new ReduceAction135*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable136) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable136) /*AbstractArray::add*/;
   variable137 = NEW_parser___ReduceAction136___init(); /*new ReduceAction136*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable137) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable137) /*AbstractArray::add*/;
   variable138 = NEW_parser___ReduceAction137___init(); /*new ReduceAction137*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable138) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable138) /*AbstractArray::add*/;
   variable139 = NEW_parser___ReduceAction138___init(); /*new ReduceAction138*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable139) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable139) /*AbstractArray::add*/;
   variable140 = NEW_parser___ReduceAction139___init(); /*new ReduceAction139*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable140) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable140) /*AbstractArray::add*/;
   variable141 = NEW_parser___ReduceAction140___init(); /*new ReduceAction140*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable141) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable141) /*AbstractArray::add*/;
   variable142 = NEW_parser___ReduceAction141___init(); /*new ReduceAction141*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable142) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable142) /*AbstractArray::add*/;
   variable143 = NEW_parser___ReduceAction142___init(); /*new ReduceAction142*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable143) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable143) /*AbstractArray::add*/;
   variable144 = NEW_parser___ReduceAction143___init(); /*new ReduceAction143*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable144) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable144) /*AbstractArray::add*/;
   variable145 = NEW_parser___ReduceAction144___init(); /*new ReduceAction144*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable145) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable145) /*AbstractArray::add*/;
   variable146 = NEW_parser___ReduceAction145___init(); /*new ReduceAction145*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable146) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable146) /*AbstractArray::add*/;
   variable147 = NEW_parser___ReduceAction146___init(); /*new ReduceAction146*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable147) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable147) /*AbstractArray::add*/;
   variable148 = NEW_parser___ReduceAction147___init(); /*new ReduceAction147*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable148) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable148) /*AbstractArray::add*/;
   variable149 = NEW_parser___ReduceAction148___init(); /*new ReduceAction148*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable149) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable149) /*AbstractArray::add*/;
   variable150 = NEW_parser___ReduceAction149___init(); /*new ReduceAction149*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable150) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable150) /*AbstractArray::add*/;
   variable151 = NEW_parser___ReduceAction150___init(); /*new ReduceAction150*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable151) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable151) /*AbstractArray::add*/;
   variable152 = NEW_parser___ReduceAction151___init(); /*new ReduceAction151*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable152) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable152) /*AbstractArray::add*/;
   variable153 = NEW_parser___ReduceAction152___init(); /*new ReduceAction152*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable153) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable153) /*AbstractArray::add*/;
   variable154 = NEW_parser___ReduceAction153___init(); /*new ReduceAction153*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable154) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable154) /*AbstractArray::add*/;
   variable155 = NEW_parser___ReduceAction154___init(); /*new ReduceAction154*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable155) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable155) /*AbstractArray::add*/;
   variable156 = NEW_parser___ReduceAction155___init(); /*new ReduceAction155*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable156) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable156) /*AbstractArray::add*/;
   variable157 = NEW_parser___ReduceAction156___init(); /*new ReduceAction156*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable157) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable157) /*AbstractArray::add*/;
   variable158 = NEW_parser___ReduceAction157___init(); /*new ReduceAction157*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable158) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable158) /*AbstractArray::add*/;
   variable159 = NEW_parser___ReduceAction158___init(); /*new ReduceAction158*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable159) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable159) /*AbstractArray::add*/;
   variable160 = NEW_parser___ReduceAction159___init(); /*new ReduceAction159*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable160) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable160) /*AbstractArray::add*/;
   variable161 = NEW_parser___ReduceAction160___init(); /*new ReduceAction160*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable161) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable161) /*AbstractArray::add*/;
   variable162 = NEW_parser___ReduceAction161___init(); /*new ReduceAction161*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable162) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable162) /*AbstractArray::add*/;
   variable163 = NEW_parser___ReduceAction162___init(); /*new ReduceAction162*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable163) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable163) /*AbstractArray::add*/;
   variable164 = NEW_parser___ReduceAction163___init(); /*new ReduceAction163*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable164) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable164) /*AbstractArray::add*/;
   variable165 = NEW_parser___ReduceAction164___init(); /*new ReduceAction164*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable165) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable165) /*AbstractArray::add*/;
   variable166 = NEW_parser___ReduceAction165___init(); /*new ReduceAction165*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable166) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable166) /*AbstractArray::add*/;
   variable167 = NEW_parser___ReduceAction166___init(); /*new ReduceAction166*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable167) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable167) /*AbstractArray::add*/;
   variable168 = NEW_parser___ReduceAction167___init(); /*new ReduceAction167*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable168) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable168) /*AbstractArray::add*/;
   variable169 = NEW_parser___ReduceAction168___init(); /*new ReduceAction168*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable169) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable169) /*AbstractArray::add*/;
   variable170 = NEW_parser___ReduceAction169___init(); /*new ReduceAction169*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable170) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable170) /*AbstractArray::add*/;
   variable171 = NEW_parser___ReduceAction170___init(); /*new ReduceAction170*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable171) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable171) /*AbstractArray::add*/;
   variable172 = NEW_parser___ReduceAction171___init(); /*new ReduceAction171*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable172) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable172) /*AbstractArray::add*/;
   variable173 = NEW_parser___ReduceAction172___init(); /*new ReduceAction172*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable173) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable173) /*AbstractArray::add*/;
   variable174 = NEW_parser___ReduceAction173___init(); /*new ReduceAction173*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable174) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable174) /*AbstractArray::add*/;
   variable175 = NEW_parser___ReduceAction174___init(); /*new ReduceAction174*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable175) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable175) /*AbstractArray::add*/;
   variable176 = NEW_parser___ReduceAction175___init(); /*new ReduceAction175*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable176) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable176) /*AbstractArray::add*/;
   variable177 = NEW_parser___ReduceAction176___init(); /*new ReduceAction176*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable177) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable177) /*AbstractArray::add*/;
   variable178 = NEW_parser___ReduceAction177___init(); /*new ReduceAction177*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable178) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable178) /*AbstractArray::add*/;
   variable179 = NEW_parser___ReduceAction178___init(); /*new ReduceAction178*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable179) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable179) /*AbstractArray::add*/;
   variable180 = NEW_parser___ReduceAction179___init(); /*new ReduceAction179*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable180) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable180) /*AbstractArray::add*/;
   variable181 = NEW_parser___ReduceAction180___init(); /*new ReduceAction180*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable181) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable181) /*AbstractArray::add*/;
   variable182 = NEW_parser___ReduceAction181___init(); /*new ReduceAction181*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable182) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable182) /*AbstractArray::add*/;
   variable183 = NEW_parser___ReduceAction182___init(); /*new ReduceAction182*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable183) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable183) /*AbstractArray::add*/;
   variable184 = NEW_parser___ReduceAction183___init(); /*new ReduceAction183*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable184) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable184) /*AbstractArray::add*/;
   variable185 = NEW_parser___ReduceAction184___init(); /*new ReduceAction184*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable185) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable185) /*AbstractArray::add*/;
   variable186 = NEW_parser___ReduceAction185___init(); /*new ReduceAction185*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable186) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable186) /*AbstractArray::add*/;
   variable187 = NEW_parser___ReduceAction186___init(); /*new ReduceAction186*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable187) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable187) /*AbstractArray::add*/;
   variable188 = NEW_parser___ReduceAction187___init(); /*new ReduceAction187*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable188) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable188) /*AbstractArray::add*/;
   variable189 = NEW_parser___ReduceAction188___init(); /*new ReduceAction188*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable189) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable189) /*AbstractArray::add*/;
   variable190 = NEW_parser___ReduceAction189___init(); /*new ReduceAction189*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable190) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable190) /*AbstractArray::add*/;
   variable191 = NEW_parser___ReduceAction190___init(); /*new ReduceAction190*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable191) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable191) /*AbstractArray::add*/;
   variable192 = NEW_parser___ReduceAction191___init(); /*new ReduceAction191*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable192) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable192) /*AbstractArray::add*/;
   variable193 = NEW_parser___ReduceAction192___init(); /*new ReduceAction192*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable193) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable193) /*AbstractArray::add*/;
   variable194 = NEW_parser___ReduceAction193___init(); /*new ReduceAction193*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable194) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable194) /*AbstractArray::add*/;
   variable195 = NEW_parser___ReduceAction194___init(); /*new ReduceAction194*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable195) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable195) /*AbstractArray::add*/;
   variable196 = NEW_parser___ReduceAction195___init(); /*new ReduceAction195*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable196) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable196) /*AbstractArray::add*/;
   variable197 = NEW_parser___ReduceAction196___init(); /*new ReduceAction196*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable197) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable197) /*AbstractArray::add*/;
   variable198 = NEW_parser___ReduceAction197___init(); /*new ReduceAction197*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable198) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable198) /*AbstractArray::add*/;
   variable199 = NEW_parser___ReduceAction198___init(); /*new ReduceAction198*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable199) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable199) /*AbstractArray::add*/;
   variable200 = NEW_parser___ReduceAction199___init(); /*new ReduceAction199*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable200) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable200) /*AbstractArray::add*/;
   variable201 = NEW_parser___ReduceAction200___init(); /*new ReduceAction200*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable201) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable201) /*AbstractArray::add*/;
   variable202 = NEW_parser___ReduceAction201___init(); /*new ReduceAction201*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable202) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable202) /*AbstractArray::add*/;
   variable203 = NEW_parser___ReduceAction202___init(); /*new ReduceAction202*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable203) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable203) /*AbstractArray::add*/;
   variable204 = NEW_parser___ReduceAction203___init(); /*new ReduceAction203*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable204) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable204) /*AbstractArray::add*/;
   variable205 = NEW_parser___ReduceAction204___init(); /*new ReduceAction204*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable205) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable205) /*AbstractArray::add*/;
   variable206 = NEW_parser___ReduceAction205___init(); /*new ReduceAction205*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable206) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable206) /*AbstractArray::add*/;
   variable207 = NEW_parser___ReduceAction206___init(); /*new ReduceAction206*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable207) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable207) /*AbstractArray::add*/;
   variable208 = NEW_parser___ReduceAction207___init(); /*new ReduceAction207*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable208) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable208) /*AbstractArray::add*/;
   variable209 = NEW_parser___ReduceAction208___init(); /*new ReduceAction208*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable209) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable209) /*AbstractArray::add*/;
   variable210 = NEW_parser___ReduceAction209___init(); /*new ReduceAction209*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable210) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable210) /*AbstractArray::add*/;
   variable211 = NEW_parser___ReduceAction210___init(); /*new ReduceAction210*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable211) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable211) /*AbstractArray::add*/;
   variable212 = NEW_parser___ReduceAction211___init(); /*new ReduceAction211*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable212) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable212) /*AbstractArray::add*/;
   variable213 = NEW_parser___ReduceAction212___init(); /*new ReduceAction212*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable213) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable213) /*AbstractArray::add*/;
   variable214 = NEW_parser___ReduceAction213___init(); /*new ReduceAction213*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable214) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable214) /*AbstractArray::add*/;
   variable215 = NEW_parser___ReduceAction214___init(); /*new ReduceAction214*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable215) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable215) /*AbstractArray::add*/;
   variable216 = NEW_parser___ReduceAction215___init(); /*new ReduceAction215*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable216) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable216) /*AbstractArray::add*/;
   variable217 = NEW_parser___ReduceAction216___init(); /*new ReduceAction216*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable217) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable217) /*AbstractArray::add*/;
   variable218 = NEW_parser___ReduceAction217___init(); /*new ReduceAction217*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable218) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable218) /*AbstractArray::add*/;
   variable219 = NEW_parser___ReduceAction218___init(); /*new ReduceAction218*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable219) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable219) /*AbstractArray::add*/;
   variable220 = NEW_parser___ReduceAction219___init(); /*new ReduceAction219*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable220) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable220) /*AbstractArray::add*/;
   variable221 = NEW_parser___ReduceAction220___init(); /*new ReduceAction220*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable221) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable221) /*AbstractArray::add*/;
   variable222 = NEW_parser___ReduceAction221___init(); /*new ReduceAction221*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable222) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable222) /*AbstractArray::add*/;
   variable223 = NEW_parser___ReduceAction222___init(); /*new ReduceAction222*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable223) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable223) /*AbstractArray::add*/;
   variable224 = NEW_parser___ReduceAction223___init(); /*new ReduceAction223*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable224) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable224) /*AbstractArray::add*/;
   variable225 = NEW_parser___ReduceAction224___init(); /*new ReduceAction224*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable225) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable225) /*AbstractArray::add*/;
   variable226 = NEW_parser___ReduceAction225___init(); /*new ReduceAction225*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable226) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable226) /*AbstractArray::add*/;
   variable227 = NEW_parser___ReduceAction226___init(); /*new ReduceAction226*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable227) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable227) /*AbstractArray::add*/;
   variable228 = NEW_parser___ReduceAction227___init(); /*new ReduceAction227*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable228) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable228) /*AbstractArray::add*/;
   variable229 = NEW_parser___ReduceAction228___init(); /*new ReduceAction228*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable229) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable229) /*AbstractArray::add*/;
   variable230 = NEW_parser___ReduceAction229___init(); /*new ReduceAction229*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable230) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable230) /*AbstractArray::add*/;
   variable231 = NEW_parser___ReduceAction230___init(); /*new ReduceAction230*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable231) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable231) /*AbstractArray::add*/;
   variable232 = NEW_parser___ReduceAction231___init(); /*new ReduceAction231*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable232) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable232) /*AbstractArray::add*/;
   variable233 = NEW_parser___ReduceAction232___init(); /*new ReduceAction232*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable233) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable233) /*AbstractArray::add*/;
   variable234 = NEW_parser___ReduceAction233___init(); /*new ReduceAction233*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable234) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable234) /*AbstractArray::add*/;
   variable235 = NEW_parser___ReduceAction234___init(); /*new ReduceAction234*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable235) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable235) /*AbstractArray::add*/;
   variable236 = NEW_parser___ReduceAction235___init(); /*new ReduceAction235*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable236) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable236) /*AbstractArray::add*/;
   variable237 = NEW_parser___ReduceAction236___init(); /*new ReduceAction236*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable237) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable237) /*AbstractArray::add*/;
   variable238 = NEW_parser___ReduceAction237___init(); /*new ReduceAction237*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable238) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable238) /*AbstractArray::add*/;
   variable239 = NEW_parser___ReduceAction238___init(); /*new ReduceAction238*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable239) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable239) /*AbstractArray::add*/;
   variable240 = NEW_parser___ReduceAction239___init(); /*new ReduceAction239*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable240) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable240) /*AbstractArray::add*/;
   variable241 = NEW_parser___ReduceAction240___init(); /*new ReduceAction240*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable241) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable241) /*AbstractArray::add*/;
   variable242 = NEW_parser___ReduceAction241___init(); /*new ReduceAction241*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable242) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable242) /*AbstractArray::add*/;
   variable243 = NEW_parser___ReduceAction242___init(); /*new ReduceAction242*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable243) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable243) /*AbstractArray::add*/;
   variable244 = NEW_parser___ReduceAction243___init(); /*new ReduceAction243*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable244) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable244) /*AbstractArray::add*/;
   variable245 = NEW_parser___ReduceAction244___init(); /*new ReduceAction244*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable245) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable245) /*AbstractArray::add*/;
   variable246 = NEW_parser___ReduceAction245___init(); /*new ReduceAction245*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable246) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable246) /*AbstractArray::add*/;
   variable247 = NEW_parser___ReduceAction246___init(); /*new ReduceAction246*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable247) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable247) /*AbstractArray::add*/;
   variable248 = NEW_parser___ReduceAction247___init(); /*new ReduceAction247*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable248) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable248) /*AbstractArray::add*/;
   variable249 = NEW_parser___ReduceAction248___init(); /*new ReduceAction248*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable249) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable249) /*AbstractArray::add*/;
   variable250 = NEW_parser___ReduceAction249___init(); /*new ReduceAction249*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable250) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable250) /*AbstractArray::add*/;
   variable251 = NEW_parser___ReduceAction250___init(); /*new ReduceAction250*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable251) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable251) /*AbstractArray::add*/;
   variable252 = NEW_parser___ReduceAction251___init(); /*new ReduceAction251*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable252) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable252) /*AbstractArray::add*/;
   variable253 = NEW_parser___ReduceAction252___init(); /*new ReduceAction252*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable253) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable253) /*AbstractArray::add*/;
   variable254 = NEW_parser___ReduceAction253___init(); /*new ReduceAction253*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable254) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable254) /*AbstractArray::add*/;
   variable255 = NEW_parser___ReduceAction254___init(); /*new ReduceAction254*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable255) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable255) /*AbstractArray::add*/;
   variable256 = NEW_parser___ReduceAction255___init(); /*new ReduceAction255*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable256) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable256) /*AbstractArray::add*/;
   variable257 = NEW_parser___ReduceAction256___init(); /*new ReduceAction256*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable257) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable257) /*AbstractArray::add*/;
   variable258 = NEW_parser___ReduceAction257___init(); /*new ReduceAction257*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable258) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable258) /*AbstractArray::add*/;
   variable259 = NEW_parser___ReduceAction258___init(); /*new ReduceAction258*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable259) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable259) /*AbstractArray::add*/;
   variable260 = NEW_parser___ReduceAction259___init(); /*new ReduceAction259*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable260) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable260) /*AbstractArray::add*/;
   variable261 = NEW_parser___ReduceAction260___init(); /*new ReduceAction260*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable261) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable261) /*AbstractArray::add*/;
   variable262 = NEW_parser___ReduceAction261___init(); /*new ReduceAction261*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable262) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable262) /*AbstractArray::add*/;
   variable263 = NEW_parser___ReduceAction262___init(); /*new ReduceAction262*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable263) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable263) /*AbstractArray::add*/;
   variable264 = NEW_parser___ReduceAction263___init(); /*new ReduceAction263*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable264) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable264) /*AbstractArray::add*/;
   variable265 = NEW_parser___ReduceAction264___init(); /*new ReduceAction264*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable265) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable265) /*AbstractArray::add*/;
   variable266 = NEW_parser___ReduceAction265___init(); /*new ReduceAction265*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable266) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable266) /*AbstractArray::add*/;
   variable267 = NEW_parser___ReduceAction266___init(); /*new ReduceAction266*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable267) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable267) /*AbstractArray::add*/;
   variable268 = NEW_parser___ReduceAction267___init(); /*new ReduceAction267*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable268) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable268) /*AbstractArray::add*/;
   variable269 = NEW_parser___ReduceAction268___init(); /*new ReduceAction268*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable269) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable269) /*AbstractArray::add*/;
   variable270 = NEW_parser___ReduceAction269___init(); /*new ReduceAction269*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable270) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable270) /*AbstractArray::add*/;
   variable271 = NEW_parser___ReduceAction270___init(); /*new ReduceAction270*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable271) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable271) /*AbstractArray::add*/;
   variable272 = NEW_parser___ReduceAction271___init(); /*new ReduceAction271*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable272) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable272) /*AbstractArray::add*/;
   variable273 = NEW_parser___ReduceAction272___init(); /*new ReduceAction272*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable273) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable273) /*AbstractArray::add*/;
   variable274 = NEW_parser___ReduceAction273___init(); /*new ReduceAction273*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable274) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable274) /*AbstractArray::add*/;
   variable275 = NEW_parser___ReduceAction274___init(); /*new ReduceAction274*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable275) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable275) /*AbstractArray::add*/;
   variable276 = NEW_parser___ReduceAction275___init(); /*new ReduceAction275*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable276) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable276) /*AbstractArray::add*/;
   variable277 = NEW_parser___ReduceAction276___init(); /*new ReduceAction276*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable277) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable277) /*AbstractArray::add*/;
   variable278 = NEW_parser___ReduceAction277___init(); /*new ReduceAction277*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable278) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable278) /*AbstractArray::add*/;
   variable279 = NEW_parser___ReduceAction278___init(); /*new ReduceAction278*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable279) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable279) /*AbstractArray::add*/;
   variable280 = NEW_parser___ReduceAction279___init(); /*new ReduceAction279*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable280) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable280) /*AbstractArray::add*/;
   variable281 = NEW_parser___ReduceAction280___init(); /*new ReduceAction280*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable281) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable281) /*AbstractArray::add*/;
   variable282 = NEW_parser___ReduceAction281___init(); /*new ReduceAction281*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable282) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable282) /*AbstractArray::add*/;
   variable283 = NEW_parser___ReduceAction282___init(); /*new ReduceAction282*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable283) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable283) /*AbstractArray::add*/;
   variable284 = NEW_parser___ReduceAction283___init(); /*new ReduceAction283*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable284) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable284) /*AbstractArray::add*/;
   variable285 = NEW_parser___ReduceAction284___init(); /*new ReduceAction284*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable285) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable285) /*AbstractArray::add*/;
   variable286 = NEW_parser___ReduceAction285___init(); /*new ReduceAction285*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable286) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable286) /*AbstractArray::add*/;
   variable287 = NEW_parser___ReduceAction286___init(); /*new ReduceAction286*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable287) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable287) /*AbstractArray::add*/;
   variable288 = NEW_parser___ReduceAction287___init(); /*new ReduceAction287*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable288) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable288) /*AbstractArray::add*/;
   variable289 = NEW_parser___ReduceAction288___init(); /*new ReduceAction288*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable289) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable289) /*AbstractArray::add*/;
   variable290 = NEW_parser___ReduceAction289___init(); /*new ReduceAction289*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable290) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable290) /*AbstractArray::add*/;
   variable291 = NEW_parser___ReduceAction290___init(); /*new ReduceAction290*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable291) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable291) /*AbstractArray::add*/;
   variable292 = NEW_parser___ReduceAction291___init(); /*new ReduceAction291*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable292) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable292) /*AbstractArray::add*/;
   variable293 = NEW_parser___ReduceAction292___init(); /*new ReduceAction292*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable293) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable293) /*AbstractArray::add*/;
   variable294 = NEW_parser___ReduceAction293___init(); /*new ReduceAction293*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable294) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable294) /*AbstractArray::add*/;
   variable295 = NEW_parser___ReduceAction294___init(); /*new ReduceAction294*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable295) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable295) /*AbstractArray::add*/;
   variable296 = NEW_parser___ReduceAction295___init(); /*new ReduceAction295*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable296) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable296) /*AbstractArray::add*/;
   variable297 = NEW_parser___ReduceAction296___init(); /*new ReduceAction296*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable297) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable297) /*AbstractArray::add*/;
   variable298 = NEW_parser___ReduceAction297___init(); /*new ReduceAction297*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable298) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable298) /*AbstractArray::add*/;
   variable299 = NEW_parser___ReduceAction298___init(); /*new ReduceAction298*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable299) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable299) /*AbstractArray::add*/;
   variable300 = NEW_parser___ReduceAction299___init(); /*new ReduceAction299*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable300) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable300) /*AbstractArray::add*/;
   variable301 = NEW_parser___ReduceAction300___init(); /*new ReduceAction300*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable301) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable301) /*AbstractArray::add*/;
   variable302 = NEW_parser___ReduceAction301___init(); /*new ReduceAction301*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable302) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable302) /*AbstractArray::add*/;
   variable303 = NEW_parser___ReduceAction302___init(); /*new ReduceAction302*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable303) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable303) /*AbstractArray::add*/;
   variable304 = NEW_parser___ReduceAction303___init(); /*new ReduceAction303*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable304) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable304) /*AbstractArray::add*/;
   variable305 = NEW_parser___ReduceAction304___init(); /*new ReduceAction304*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable305) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable305) /*AbstractArray::add*/;
   variable306 = NEW_parser___ReduceAction305___init(); /*new ReduceAction305*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable306) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable306) /*AbstractArray::add*/;
   variable307 = NEW_parser___ReduceAction306___init(); /*new ReduceAction306*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable307) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable307) /*AbstractArray::add*/;
   variable308 = NEW_parser___ReduceAction307___init(); /*new ReduceAction307*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable308) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable308) /*AbstractArray::add*/;
   variable309 = NEW_parser___ReduceAction308___init(); /*new ReduceAction308*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable309) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable309) /*AbstractArray::add*/;
   variable310 = NEW_parser___ReduceAction309___init(); /*new ReduceAction309*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable310) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable310) /*AbstractArray::add*/;
   variable311 = NEW_parser___ReduceAction310___init(); /*new ReduceAction310*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable311) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable311) /*AbstractArray::add*/;
   variable312 = NEW_parser___ReduceAction311___init(); /*new ReduceAction311*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable312) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable312) /*AbstractArray::add*/;
   variable313 = NEW_parser___ReduceAction312___init(); /*new ReduceAction312*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable313) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable313) /*AbstractArray::add*/;
   variable314 = NEW_parser___ReduceAction313___init(); /*new ReduceAction313*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable314) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable314) /*AbstractArray::add*/;
   variable315 = NEW_parser___ReduceAction314___init(); /*new ReduceAction314*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable315) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable315) /*AbstractArray::add*/;
   variable316 = NEW_parser___ReduceAction315___init(); /*new ReduceAction315*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable316) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable316) /*AbstractArray::add*/;
   variable317 = NEW_parser___ReduceAction316___init(); /*new ReduceAction316*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable317) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable317) /*AbstractArray::add*/;
   variable318 = NEW_parser___ReduceAction317___init(); /*new ReduceAction317*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable318) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable318) /*AbstractArray::add*/;
   variable319 = NEW_parser___ReduceAction318___init(); /*new ReduceAction318*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable319) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable319) /*AbstractArray::add*/;
   variable320 = NEW_parser___ReduceAction319___init(); /*new ReduceAction319*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable320) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable320) /*AbstractArray::add*/;
   variable321 = NEW_parser___ReduceAction320___init(); /*new ReduceAction320*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable321) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable321) /*AbstractArray::add*/;
   variable322 = NEW_parser___ReduceAction321___init(); /*new ReduceAction321*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable322) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable322) /*AbstractArray::add*/;
   variable323 = NEW_parser___ReduceAction322___init(); /*new ReduceAction322*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable323) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable323) /*AbstractArray::add*/;
   variable324 = NEW_parser___ReduceAction323___init(); /*new ReduceAction323*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable324) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable324) /*AbstractArray::add*/;
   variable325 = NEW_parser___ReduceAction324___init(); /*new ReduceAction324*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable325) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable325) /*AbstractArray::add*/;
   variable326 = NEW_parser___ReduceAction325___init(); /*new ReduceAction325*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable326) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable326) /*AbstractArray::add*/;
   variable327 = NEW_parser___ReduceAction326___init(); /*new ReduceAction326*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable327) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable327) /*AbstractArray::add*/;
   variable328 = NEW_parser___ReduceAction327___init(); /*new ReduceAction327*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable328) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable328) /*AbstractArray::add*/;
   variable329 = NEW_parser___ReduceAction328___init(); /*new ReduceAction328*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable329) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable329) /*AbstractArray::add*/;
   variable330 = NEW_parser___ReduceAction329___init(); /*new ReduceAction329*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable330) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable330) /*AbstractArray::add*/;
   variable331 = NEW_parser___ReduceAction330___init(); /*new ReduceAction330*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable331) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable331) /*AbstractArray::add*/;
   variable332 = NEW_parser___ReduceAction331___init(); /*new ReduceAction331*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable332) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable332) /*AbstractArray::add*/;
   variable333 = NEW_parser___ReduceAction332___init(); /*new ReduceAction332*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable333) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable333) /*AbstractArray::add*/;
   variable334 = NEW_parser___ReduceAction333___init(); /*new ReduceAction333*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable334) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable334) /*AbstractArray::add*/;
   variable335 = NEW_parser___ReduceAction334___init(); /*new ReduceAction334*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable335) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable335) /*AbstractArray::add*/;
   variable336 = NEW_parser___ReduceAction335___init(); /*new ReduceAction335*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable336) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable336) /*AbstractArray::add*/;
   variable337 = NEW_parser___ReduceAction336___init(); /*new ReduceAction336*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable337) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable337) /*AbstractArray::add*/;
   variable338 = NEW_parser___ReduceAction337___init(); /*new ReduceAction337*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable338) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable338) /*AbstractArray::add*/;
   variable339 = NEW_parser___ReduceAction338___init(); /*new ReduceAction338*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable339) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable339) /*AbstractArray::add*/;
   variable340 = NEW_parser___ReduceAction339___init(); /*new ReduceAction339*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable340) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable340) /*AbstractArray::add*/;
   variable341 = NEW_parser___ReduceAction340___init(); /*new ReduceAction340*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable341) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable341) /*AbstractArray::add*/;
   variable342 = NEW_parser___ReduceAction341___init(); /*new ReduceAction341*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable342) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable342) /*AbstractArray::add*/;
   variable343 = NEW_parser___ReduceAction342___init(); /*new ReduceAction342*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable343) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable343) /*AbstractArray::add*/;
   variable344 = NEW_parser___ReduceAction343___init(); /*new ReduceAction343*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable344) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable344) /*AbstractArray::add*/;
   variable345 = NEW_parser___ReduceAction344___init(); /*new ReduceAction344*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable345) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable345) /*AbstractArray::add*/;
   variable346 = NEW_parser___ReduceAction345___init(); /*new ReduceAction345*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable346) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable346) /*AbstractArray::add*/;
   variable347 = NEW_parser___ReduceAction346___init(); /*new ReduceAction346*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable347) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable347) /*AbstractArray::add*/;
   variable348 = NEW_parser___ReduceAction347___init(); /*new ReduceAction347*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable348) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable348) /*AbstractArray::add*/;
   variable349 = NEW_parser___ReduceAction348___init(); /*new ReduceAction348*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable349) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable349) /*AbstractArray::add*/;
   variable350 = NEW_parser___ReduceAction349___init(); /*new ReduceAction349*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable350) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable350) /*AbstractArray::add*/;
   variable351 = NEW_parser___ReduceAction350___init(); /*new ReduceAction350*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable351) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable351) /*AbstractArray::add*/;
   variable352 = NEW_parser___ReduceAction351___init(); /*new ReduceAction351*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable352) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable352) /*AbstractArray::add*/;
   variable353 = NEW_parser___ReduceAction352___init(); /*new ReduceAction352*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable353) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable353) /*AbstractArray::add*/;
   variable354 = NEW_parser___ReduceAction353___init(); /*new ReduceAction353*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable354) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable354) /*AbstractArray::add*/;
   variable355 = NEW_parser___ReduceAction354___init(); /*new ReduceAction354*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable355) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable355) /*AbstractArray::add*/;
   variable356 = NEW_parser___ReduceAction355___init(); /*new ReduceAction355*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable356) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable356) /*AbstractArray::add*/;
   variable357 = NEW_parser___ReduceAction356___init(); /*new ReduceAction356*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable357) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable357) /*AbstractArray::add*/;
   variable358 = NEW_parser___ReduceAction357___init(); /*new ReduceAction357*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable358) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable358) /*AbstractArray::add*/;
   variable359 = NEW_parser___ReduceAction358___init(); /*new ReduceAction358*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable359) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable359) /*AbstractArray::add*/;
   variable360 = NEW_parser___ReduceAction359___init(); /*new ReduceAction359*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable360) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable360) /*AbstractArray::add*/;
   variable361 = NEW_parser___ReduceAction360___init(); /*new ReduceAction360*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable361) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable361) /*AbstractArray::add*/;
   variable362 = NEW_parser___ReduceAction361___init(); /*new ReduceAction361*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable362) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable362) /*AbstractArray::add*/;
   variable363 = NEW_parser___ReduceAction362___init(); /*new ReduceAction362*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable363) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable363) /*AbstractArray::add*/;
   variable364 = NEW_parser___ReduceAction363___init(); /*new ReduceAction363*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable364) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable364) /*AbstractArray::add*/;
   variable365 = NEW_parser___ReduceAction364___init(); /*new ReduceAction364*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable365) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable365) /*AbstractArray::add*/;
   variable366 = NEW_parser___ReduceAction365___init(); /*new ReduceAction365*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable366) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable366) /*AbstractArray::add*/;
   variable367 = NEW_parser___ReduceAction366___init(); /*new ReduceAction366*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable367) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable367) /*AbstractArray::add*/;
   variable368 = NEW_parser___ReduceAction367___init(); /*new ReduceAction367*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable368) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable368) /*AbstractArray::add*/;
   variable369 = NEW_parser___ReduceAction368___init(); /*new ReduceAction368*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable369) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable369) /*AbstractArray::add*/;
   variable370 = NEW_parser___ReduceAction369___init(); /*new ReduceAction369*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable370) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable370) /*AbstractArray::add*/;
   variable371 = NEW_parser___ReduceAction370___init(); /*new ReduceAction370*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable371) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable371) /*AbstractArray::add*/;
   variable372 = NEW_parser___ReduceAction371___init(); /*new ReduceAction371*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable372) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable372) /*AbstractArray::add*/;
   variable373 = NEW_parser___ReduceAction372___init(); /*new ReduceAction372*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable373) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable373) /*AbstractArray::add*/;
   variable374 = NEW_parser___ReduceAction373___init(); /*new ReduceAction373*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable374) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable374) /*AbstractArray::add*/;
   variable375 = NEW_parser___ReduceAction374___init(); /*new ReduceAction374*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable375) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable375) /*AbstractArray::add*/;
   variable376 = NEW_parser___ReduceAction375___init(); /*new ReduceAction375*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable376) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable376) /*AbstractArray::add*/;
   variable377 = NEW_parser___ReduceAction376___init(); /*new ReduceAction376*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable377) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable377) /*AbstractArray::add*/;
   variable378 = NEW_parser___ReduceAction377___init(); /*new ReduceAction377*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable378) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable378) /*AbstractArray::add*/;
   variable379 = NEW_parser___ReduceAction378___init(); /*new ReduceAction378*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable379) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable379) /*AbstractArray::add*/;
   variable380 = NEW_parser___ReduceAction379___init(); /*new ReduceAction379*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable380) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable380) /*AbstractArray::add*/;
   variable381 = NEW_parser___ReduceAction380___init(); /*new ReduceAction380*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable381) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable381) /*AbstractArray::add*/;
   variable382 = NEW_parser___ReduceAction381___init(); /*new ReduceAction381*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable382) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable382) /*AbstractArray::add*/;
   variable383 = NEW_parser___ReduceAction382___init(); /*new ReduceAction382*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable383) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable383) /*AbstractArray::add*/;
   variable384 = NEW_parser___ReduceAction383___init(); /*new ReduceAction383*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable384) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable384) /*AbstractArray::add*/;
   variable385 = NEW_parser___ReduceAction384___init(); /*new ReduceAction384*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable385) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable385) /*AbstractArray::add*/;
   variable386 = NEW_parser___ReduceAction385___init(); /*new ReduceAction385*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable386) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable386) /*AbstractArray::add*/;
   variable387 = NEW_parser___ReduceAction386___init(); /*new ReduceAction386*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable387) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable387) /*AbstractArray::add*/;
   variable388 = NEW_parser___ReduceAction387___init(); /*new ReduceAction387*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable388) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable388) /*AbstractArray::add*/;
   variable389 = NEW_parser___ReduceAction388___init(); /*new ReduceAction388*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable389) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable389) /*AbstractArray::add*/;
   variable390 = NEW_parser___ReduceAction389___init(); /*new ReduceAction389*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable390) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable390) /*AbstractArray::add*/;
   variable391 = NEW_parser___ReduceAction390___init(); /*new ReduceAction390*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable391) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable391) /*AbstractArray::add*/;
   variable392 = NEW_parser___ReduceAction391___init(); /*new ReduceAction391*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable392) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable392) /*AbstractArray::add*/;
   variable393 = NEW_parser___ReduceAction392___init(); /*new ReduceAction392*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable393) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable393) /*AbstractArray::add*/;
   variable394 = NEW_parser___ReduceAction393___init(); /*new ReduceAction393*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable394) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable394) /*AbstractArray::add*/;
   variable395 = NEW_parser___ReduceAction394___init(); /*new ReduceAction394*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable395) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable395) /*AbstractArray::add*/;
   variable396 = NEW_parser___ReduceAction395___init(); /*new ReduceAction395*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable396) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable396) /*AbstractArray::add*/;
   variable397 = NEW_parser___ReduceAction396___init(); /*new ReduceAction396*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable397) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable397) /*AbstractArray::add*/;
   variable398 = NEW_parser___ReduceAction397___init(); /*new ReduceAction397*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable398) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable398) /*AbstractArray::add*/;
   variable399 = NEW_parser___ReduceAction398___init(); /*new ReduceAction398*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable399) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable399) /*AbstractArray::add*/;
   variable400 = NEW_parser___ReduceAction399___init(); /*new ReduceAction399*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable400) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable400) /*AbstractArray::add*/;
   variable401 = NEW_parser___ReduceAction400___init(); /*new ReduceAction400*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable401) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable401) /*AbstractArray::add*/;
   variable402 = NEW_parser___ReduceAction401___init(); /*new ReduceAction401*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable402) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable402) /*AbstractArray::add*/;
   variable403 = NEW_parser___ReduceAction402___init(); /*new ReduceAction402*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable403) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable403) /*AbstractArray::add*/;
   variable404 = NEW_parser___ReduceAction403___init(); /*new ReduceAction403*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable404) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable404) /*AbstractArray::add*/;
   variable405 = NEW_parser___ReduceAction404___init(); /*new ReduceAction404*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable405) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable405) /*AbstractArray::add*/;
   variable406 = NEW_parser___ReduceAction405___init(); /*new ReduceAction405*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable406) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable406) /*AbstractArray::add*/;
   variable407 = NEW_parser___ReduceAction406___init(); /*new ReduceAction406*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable407) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable407) /*AbstractArray::add*/;
   variable408 = NEW_parser___ReduceAction407___init(); /*new ReduceAction407*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable408) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable408) /*AbstractArray::add*/;
   variable409 = NEW_parser___ReduceAction408___init(); /*new ReduceAction408*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable409) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable409) /*AbstractArray::add*/;
   variable410 = NEW_parser___ReduceAction409___init(); /*new ReduceAction409*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable410) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable410) /*AbstractArray::add*/;
   variable411 = NEW_parser___ReduceAction410___init(); /*new ReduceAction410*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable411) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable411) /*AbstractArray::add*/;
   variable412 = NEW_parser___ReduceAction411___init(); /*new ReduceAction411*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable412) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable412) /*AbstractArray::add*/;
   variable413 = NEW_parser___ReduceAction412___init(); /*new ReduceAction412*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable413) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable413) /*AbstractArray::add*/;
   variable414 = NEW_parser___ReduceAction413___init(); /*new ReduceAction413*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable414) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable414) /*AbstractArray::add*/;
   variable415 = NEW_parser___ReduceAction414___init(); /*new ReduceAction414*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable415) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable415) /*AbstractArray::add*/;
   variable416 = NEW_parser___ReduceAction415___init(); /*new ReduceAction415*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable416) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable416) /*AbstractArray::add*/;
   variable417 = NEW_parser___ReduceAction416___init(); /*new ReduceAction416*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable417) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable417) /*AbstractArray::add*/;
   variable418 = NEW_parser___ReduceAction417___init(); /*new ReduceAction417*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable418) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable418) /*AbstractArray::add*/;
   variable419 = NEW_parser___ReduceAction418___init(); /*new ReduceAction418*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable419) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable419) /*AbstractArray::add*/;
   variable420 = NEW_parser___ReduceAction419___init(); /*new ReduceAction419*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable420) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable420) /*AbstractArray::add*/;
   variable421 = NEW_parser___ReduceAction420___init(); /*new ReduceAction420*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable421) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable421) /*AbstractArray::add*/;
   variable422 = NEW_parser___ReduceAction421___init(); /*new ReduceAction421*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable422) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable422) /*AbstractArray::add*/;
   variable423 = NEW_parser___ReduceAction422___init(); /*new ReduceAction422*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable423) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable423) /*AbstractArray::add*/;
   variable424 = NEW_parser___ReduceAction423___init(); /*new ReduceAction423*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable424) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable424) /*AbstractArray::add*/;
   variable425 = NEW_parser___ReduceAction424___init(); /*new ReduceAction424*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable425) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable425) /*AbstractArray::add*/;
   variable426 = NEW_parser___ReduceAction425___init(); /*new ReduceAction425*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable426) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable426) /*AbstractArray::add*/;
   variable427 = NEW_parser___ReduceAction426___init(); /*new ReduceAction426*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable427) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable427) /*AbstractArray::add*/;
   variable428 = NEW_parser___ReduceAction427___init(); /*new ReduceAction427*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable428) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable428) /*AbstractArray::add*/;
   variable429 = NEW_parser___ReduceAction428___init(); /*new ReduceAction428*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable429) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable429) /*AbstractArray::add*/;
   variable430 = NEW_parser___ReduceAction429___init(); /*new ReduceAction429*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable430) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable430) /*AbstractArray::add*/;
   variable431 = NEW_parser___ReduceAction430___init(); /*new ReduceAction430*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable431) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable431) /*AbstractArray::add*/;
   variable432 = NEW_parser___ReduceAction431___init(); /*new ReduceAction431*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable432) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable432) /*AbstractArray::add*/;
   variable433 = NEW_parser___ReduceAction432___init(); /*new ReduceAction432*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable433) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable433) /*AbstractArray::add*/;
   variable434 = NEW_parser___ReduceAction433___init(); /*new ReduceAction433*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable434) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable434) /*AbstractArray::add*/;
   variable435 = NEW_parser___ReduceAction434___init(); /*new ReduceAction434*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable435) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable435) /*AbstractArray::add*/;
   variable436 = NEW_parser___ReduceAction435___init(); /*new ReduceAction435*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable436) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable436) /*AbstractArray::add*/;
   variable437 = NEW_parser___ReduceAction436___init(); /*new ReduceAction436*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable437) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable437) /*AbstractArray::add*/;
   variable438 = NEW_parser___ReduceAction437___init(); /*new ReduceAction437*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable438) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable438) /*AbstractArray::add*/;
   variable439 = NEW_parser___ReduceAction438___init(); /*new ReduceAction438*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable439) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable439) /*AbstractArray::add*/;
   variable440 = NEW_parser___ReduceAction439___init(); /*new ReduceAction439*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable440) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable440) /*AbstractArray::add*/;
   variable441 = NEW_parser___ReduceAction440___init(); /*new ReduceAction440*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable441) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable441) /*AbstractArray::add*/;
   variable442 = NEW_parser___ReduceAction441___init(); /*new ReduceAction441*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable442) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable442) /*AbstractArray::add*/;
   variable443 = NEW_parser___ReduceAction442___init(); /*new ReduceAction442*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable443) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable443) /*AbstractArray::add*/;
   variable444 = NEW_parser___ReduceAction443___init(); /*new ReduceAction443*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable444) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable444) /*AbstractArray::add*/;
   variable445 = NEW_parser___ReduceAction444___init(); /*new ReduceAction444*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable445) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable445) /*AbstractArray::add*/;
   variable446 = NEW_parser___ReduceAction445___init(); /*new ReduceAction445*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable446) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable446) /*AbstractArray::add*/;
   variable447 = NEW_parser___ReduceAction446___init(); /*new ReduceAction446*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable447) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable447) /*AbstractArray::add*/;
   variable448 = NEW_parser___ReduceAction447___init(); /*new ReduceAction447*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable448) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable448) /*AbstractArray::add*/;
   variable449 = NEW_parser___ReduceAction448___init(); /*new ReduceAction448*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable449) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable449) /*AbstractArray::add*/;
   variable450 = NEW_parser___ReduceAction449___init(); /*new ReduceAction449*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable450) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable450) /*AbstractArray::add*/;
   variable451 = NEW_parser___ReduceAction450___init(); /*new ReduceAction450*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable451) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable451) /*AbstractArray::add*/;
   variable452 = NEW_parser___ReduceAction451___init(); /*new ReduceAction451*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable452) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable452) /*AbstractArray::add*/;
   variable453 = NEW_parser___ReduceAction452___init(); /*new ReduceAction452*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable453) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable453) /*AbstractArray::add*/;
   variable454 = NEW_parser___ReduceAction453___init(); /*new ReduceAction453*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable454) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable454) /*AbstractArray::add*/;
   variable455 = NEW_parser___ReduceAction454___init(); /*new ReduceAction454*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable455) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable455) /*AbstractArray::add*/;
   variable456 = NEW_parser___ReduceAction455___init(); /*new ReduceAction455*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable456) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable456) /*AbstractArray::add*/;
   variable457 = NEW_parser___ReduceAction456___init(); /*new ReduceAction456*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable457) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable457) /*AbstractArray::add*/;
   variable458 = NEW_parser___ReduceAction457___init(); /*new ReduceAction457*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable458) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable458) /*AbstractArray::add*/;
   variable459 = NEW_parser___ReduceAction458___init(); /*new ReduceAction458*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable459) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable459) /*AbstractArray::add*/;
   variable460 = NEW_parser___ReduceAction459___init(); /*new ReduceAction459*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable460) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable460) /*AbstractArray::add*/;
   variable461 = NEW_parser___ReduceAction460___init(); /*new ReduceAction460*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable461) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable461) /*AbstractArray::add*/;
   variable462 = NEW_parser___ReduceAction461___init(); /*new ReduceAction461*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable462) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable462) /*AbstractArray::add*/;
   variable463 = NEW_parser___ReduceAction462___init(); /*new ReduceAction462*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable463) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable463) /*AbstractArray::add*/;
   variable464 = NEW_parser___ReduceAction463___init(); /*new ReduceAction463*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable464) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable464) /*AbstractArray::add*/;
   variable465 = NEW_parser___ReduceAction464___init(); /*new ReduceAction464*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable465) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable465) /*AbstractArray::add*/;
   variable466 = NEW_parser___ReduceAction465___init(); /*new ReduceAction465*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable466) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable466) /*AbstractArray::add*/;
   variable467 = NEW_parser___ReduceAction466___init(); /*new ReduceAction466*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable467) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable467) /*AbstractArray::add*/;
   variable468 = NEW_parser___ReduceAction467___init(); /*new ReduceAction467*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable468) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable468) /*AbstractArray::add*/;
   variable469 = NEW_parser___ReduceAction468___init(); /*new ReduceAction468*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable469) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable469) /*AbstractArray::add*/;
   variable470 = NEW_parser___ReduceAction469___init(); /*new ReduceAction469*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable470) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable470) /*AbstractArray::add*/;
   variable471 = NEW_parser___ReduceAction470___init(); /*new ReduceAction470*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable471) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable471) /*AbstractArray::add*/;
   variable472 = NEW_parser___ReduceAction471___init(); /*new ReduceAction471*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable472) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable472) /*AbstractArray::add*/;
   variable473 = NEW_parser___ReduceAction472___init(); /*new ReduceAction472*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable473) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable473) /*AbstractArray::add*/;
   variable474 = NEW_parser___ReduceAction473___init(); /*new ReduceAction473*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable474) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable474) /*AbstractArray::add*/;
   variable475 = NEW_parser___ReduceAction474___init(); /*new ReduceAction474*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable475) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable475) /*AbstractArray::add*/;
   variable476 = NEW_parser___ReduceAction475___init(); /*new ReduceAction475*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable476) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable476) /*AbstractArray::add*/;
   variable477 = NEW_parser___ReduceAction476___init(); /*new ReduceAction476*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable477) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable477) /*AbstractArray::add*/;
   variable478 = NEW_parser___ReduceAction477___init(); /*new ReduceAction477*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable478) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable478) /*AbstractArray::add*/;
   variable479 = NEW_parser___ReduceAction478___init(); /*new ReduceAction478*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable479) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable479) /*AbstractArray::add*/;
   variable480 = NEW_parser___ReduceAction479___init(); /*new ReduceAction479*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable480) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable480) /*AbstractArray::add*/;
   variable481 = NEW_parser___ReduceAction480___init(); /*new ReduceAction480*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable481) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable481) /*AbstractArray::add*/;
   variable482 = NEW_parser___ReduceAction481___init(); /*new ReduceAction481*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable482) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable482) /*AbstractArray::add*/;
   variable483 = NEW_parser___ReduceAction482___init(); /*new ReduceAction482*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable483) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable483) /*AbstractArray::add*/;
   variable484 = NEW_parser___ReduceAction483___init(); /*new ReduceAction483*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable484) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable484) /*AbstractArray::add*/;
   variable485 = NEW_parser___ReduceAction484___init(); /*new ReduceAction484*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable485) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable485) /*AbstractArray::add*/;
   variable486 = NEW_parser___ReduceAction485___init(); /*new ReduceAction485*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable486) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable486) /*AbstractArray::add*/;
   variable487 = NEW_parser___ReduceAction486___init(); /*new ReduceAction486*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable487) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable487) /*AbstractArray::add*/;
   variable488 = NEW_parser___ReduceAction487___init(); /*new ReduceAction487*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable488) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable488) /*AbstractArray::add*/;
   variable489 = NEW_parser___ReduceAction488___init(); /*new ReduceAction488*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable489) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable489) /*AbstractArray::add*/;
   variable490 = NEW_parser___ReduceAction489___init(); /*new ReduceAction489*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable490) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable490) /*AbstractArray::add*/;
   variable491 = NEW_parser___ReduceAction490___init(); /*new ReduceAction490*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable491) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable491) /*AbstractArray::add*/;
   variable492 = NEW_parser___ReduceAction491___init(); /*new ReduceAction491*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable492) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable492) /*AbstractArray::add*/;
   variable493 = NEW_parser___ReduceAction492___init(); /*new ReduceAction492*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable493) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable493) /*AbstractArray::add*/;
   variable494 = NEW_parser___ReduceAction493___init(); /*new ReduceAction493*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable494) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable494) /*AbstractArray::add*/;
   variable495 = NEW_parser___ReduceAction494___init(); /*new ReduceAction494*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable495) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable495) /*AbstractArray::add*/;
   variable496 = NEW_parser___ReduceAction495___init(); /*new ReduceAction495*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable496) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable496) /*AbstractArray::add*/;
   variable497 = NEW_parser___ReduceAction496___init(); /*new ReduceAction496*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable497) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable497) /*AbstractArray::add*/;
   variable498 = NEW_parser___ReduceAction497___init(); /*new ReduceAction497*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable498) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable498) /*AbstractArray::add*/;
   variable499 = NEW_parser___ReduceAction498___init(); /*new ReduceAction498*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable499) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable499) /*AbstractArray::add*/;
   variable500 = NEW_parser___ReduceAction499___init(); /*new ReduceAction499*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable500) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable500) /*AbstractArray::add*/;
   variable501 = NEW_parser___ReduceAction500___init(); /*new ReduceAction500*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable501) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable501) /*AbstractArray::add*/;
   variable502 = NEW_parser___ReduceAction501___init(); /*new ReduceAction501*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable502) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable502) /*AbstractArray::add*/;
   variable503 = NEW_parser___ReduceAction502___init(); /*new ReduceAction502*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable503) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable503) /*AbstractArray::add*/;
   variable504 = NEW_parser___ReduceAction503___init(); /*new ReduceAction503*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable504) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable504) /*AbstractArray::add*/;
   variable505 = NEW_parser___ReduceAction504___init(); /*new ReduceAction504*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable505) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable505) /*AbstractArray::add*/;
   variable506 = NEW_parser___ReduceAction505___init(); /*new ReduceAction505*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable506) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable506) /*AbstractArray::add*/;
   variable507 = NEW_parser___ReduceAction506___init(); /*new ReduceAction506*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable507) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable507) /*AbstractArray::add*/;
   variable508 = NEW_parser___ReduceAction507___init(); /*new ReduceAction507*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable508) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable508) /*AbstractArray::add*/;
   variable509 = NEW_parser___ReduceAction508___init(); /*new ReduceAction508*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable509) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable509) /*AbstractArray::add*/;
   variable510 = NEW_parser___ReduceAction509___init(); /*new ReduceAction509*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable510) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable510) /*AbstractArray::add*/;
   variable511 = NEW_parser___ReduceAction510___init(); /*new ReduceAction510*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable511) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable511) /*AbstractArray::add*/;
   variable512 = NEW_parser___ReduceAction511___init(); /*new ReduceAction511*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable512) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable512) /*AbstractArray::add*/;
   variable513 = NEW_parser___ReduceAction512___init(); /*new ReduceAction512*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable513) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable513) /*AbstractArray::add*/;
   variable514 = NEW_parser___ReduceAction513___init(); /*new ReduceAction513*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable514) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable514) /*AbstractArray::add*/;
   variable515 = NEW_parser___ReduceAction514___init(); /*new ReduceAction514*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable515) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable515) /*AbstractArray::add*/;
   variable516 = NEW_parser___ReduceAction515___init(); /*new ReduceAction515*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable516) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable516) /*AbstractArray::add*/;
   variable517 = NEW_parser___ReduceAction516___init(); /*new ReduceAction516*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable517) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable517) /*AbstractArray::add*/;
   variable518 = NEW_parser___ReduceAction517___init(); /*new ReduceAction517*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable518) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable518) /*AbstractArray::add*/;
   variable519 = NEW_parser___ReduceAction518___init(); /*new ReduceAction518*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable519) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable519) /*AbstractArray::add*/;
   variable520 = NEW_parser___ReduceAction519___init(); /*new ReduceAction519*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable520) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable520) /*AbstractArray::add*/;
   variable521 = NEW_parser___ReduceAction520___init(); /*new ReduceAction520*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable521) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable521) /*AbstractArray::add*/;
   variable522 = NEW_parser___ReduceAction521___init(); /*new ReduceAction521*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable522) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable522) /*AbstractArray::add*/;
   variable523 = NEW_parser___ReduceAction522___init(); /*new ReduceAction522*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable523) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable523) /*AbstractArray::add*/;
   variable524 = NEW_parser___ReduceAction523___init(); /*new ReduceAction523*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable524) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable524) /*AbstractArray::add*/;
   variable525 = NEW_parser___ReduceAction524___init(); /*new ReduceAction524*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable525) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable525) /*AbstractArray::add*/;
   variable526 = NEW_parser___ReduceAction525___init(); /*new ReduceAction525*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable526) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable526) /*AbstractArray::add*/;
   variable527 = NEW_parser___ReduceAction526___init(); /*new ReduceAction526*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable527) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable527) /*AbstractArray::add*/;
   variable528 = NEW_parser___ReduceAction527___init(); /*new ReduceAction527*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable528) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable528) /*AbstractArray::add*/;
   variable529 = NEW_parser___ReduceAction528___init(); /*new ReduceAction528*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable529) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable529) /*AbstractArray::add*/;
   variable530 = NEW_parser___ReduceAction529___init(); /*new ReduceAction529*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable530) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable530) /*AbstractArray::add*/;
   variable531 = NEW_parser___ReduceAction530___init(); /*new ReduceAction530*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable531) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable531) /*AbstractArray::add*/;
   variable532 = NEW_parser___ReduceAction531___init(); /*new ReduceAction531*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable532) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable532) /*AbstractArray::add*/;
   variable533 = NEW_parser___ReduceAction532___init(); /*new ReduceAction532*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable533) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable533) /*AbstractArray::add*/;
   variable534 = NEW_parser___ReduceAction533___init(); /*new ReduceAction533*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable534) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable534) /*AbstractArray::add*/;
   variable535 = NEW_parser___ReduceAction534___init(); /*new ReduceAction534*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable535) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable535) /*AbstractArray::add*/;
   variable536 = NEW_parser___ReduceAction535___init(); /*new ReduceAction535*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable536) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable536) /*AbstractArray::add*/;
   variable537 = NEW_parser___ReduceAction536___init(); /*new ReduceAction536*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable537) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable537) /*AbstractArray::add*/;
   variable538 = NEW_parser___ReduceAction537___init(); /*new ReduceAction537*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable538) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable538) /*AbstractArray::add*/;
   variable539 = NEW_parser___ReduceAction538___init(); /*new ReduceAction538*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable539) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable539) /*AbstractArray::add*/;
   variable540 = NEW_parser___ReduceAction539___init(); /*new ReduceAction539*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable540) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable540) /*AbstractArray::add*/;
   variable541 = NEW_parser___ReduceAction540___init(); /*new ReduceAction540*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable541) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable541) /*AbstractArray::add*/;
   variable542 = NEW_parser___ReduceAction541___init(); /*new ReduceAction541*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable542) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable542) /*AbstractArray::add*/;
   variable543 = NEW_parser___ReduceAction542___init(); /*new ReduceAction542*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable543) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable543) /*AbstractArray::add*/;
   variable544 = NEW_parser___ReduceAction543___init(); /*new ReduceAction543*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable544) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable544) /*AbstractArray::add*/;
   variable545 = NEW_parser___ReduceAction544___init(); /*new ReduceAction544*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable545) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable545) /*AbstractArray::add*/;
   variable546 = NEW_parser___ReduceAction545___init(); /*new ReduceAction545*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable546) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable546) /*AbstractArray::add*/;
   variable547 = NEW_parser___ReduceAction546___init(); /*new ReduceAction546*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable547) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable547) /*AbstractArray::add*/;
   variable548 = NEW_parser___ReduceAction547___init(); /*new ReduceAction547*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable548) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable548) /*AbstractArray::add*/;
   variable549 = NEW_parser___ReduceAction548___init(); /*new ReduceAction548*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable549) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable549) /*AbstractArray::add*/;
   variable550 = NEW_parser___ReduceAction549___init(); /*new ReduceAction549*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable550) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable550) /*AbstractArray::add*/;
   variable551 = NEW_parser___ReduceAction550___init(); /*new ReduceAction550*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable551) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable551) /*AbstractArray::add*/;
   variable552 = NEW_parser___ReduceAction551___init(); /*new ReduceAction551*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable552) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable552) /*AbstractArray::add*/;
   variable553 = NEW_parser___ReduceAction552___init(); /*new ReduceAction552*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable553) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable553) /*AbstractArray::add*/;
   variable554 = NEW_parser___ReduceAction553___init(); /*new ReduceAction553*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable554) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable554) /*AbstractArray::add*/;
   variable555 = NEW_parser___ReduceAction554___init(); /*new ReduceAction554*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable555) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable555) /*AbstractArray::add*/;
   variable556 = NEW_parser___ReduceAction555___init(); /*new ReduceAction555*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable556) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable556) /*AbstractArray::add*/;
   variable557 = NEW_parser___ReduceAction556___init(); /*new ReduceAction556*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable557) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable557) /*AbstractArray::add*/;
   variable558 = NEW_parser___ReduceAction557___init(); /*new ReduceAction557*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable558) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable558) /*AbstractArray::add*/;
   variable559 = NEW_parser___ReduceAction558___init(); /*new ReduceAction558*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable559) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable559) /*AbstractArray::add*/;
   variable560 = NEW_parser___ReduceAction559___init(); /*new ReduceAction559*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable560) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable560) /*AbstractArray::add*/;
   variable561 = NEW_parser___ReduceAction560___init(); /*new ReduceAction560*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable561) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable561) /*AbstractArray::add*/;
   variable562 = NEW_parser___ReduceAction561___init(); /*new ReduceAction561*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable562) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable562) /*AbstractArray::add*/;
   variable563 = NEW_parser___ReduceAction562___init(); /*new ReduceAction562*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable563) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable563) /*AbstractArray::add*/;
   variable564 = NEW_parser___ReduceAction563___init(); /*new ReduceAction563*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable564) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable564) /*AbstractArray::add*/;
   variable565 = NEW_parser___ReduceAction564___init(); /*new ReduceAction564*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable565) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable565) /*AbstractArray::add*/;
   variable566 = NEW_parser___ReduceAction565___init(); /*new ReduceAction565*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable566) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable566) /*AbstractArray::add*/;
   variable567 = NEW_parser___ReduceAction566___init(); /*new ReduceAction566*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable567) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable567) /*AbstractArray::add*/;
   variable568 = NEW_parser___ReduceAction567___init(); /*new ReduceAction567*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable568) /*Array::add*/;
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable568) /*AbstractArray::add*/;
   variable569 = NEW_parser___ReduceAction568___init(); /*new ReduceAction568*/
-  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable569) /*Array::add*/;
-  variable1 = NEW_array___Array___with(variable0); /*new Array[ReduceAction]*/
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable569) /*AbstractArray::add*/;
+  variable570 = NEW_parser___ReduceAction569___init(); /*new ReduceAction569*/
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable570) /*AbstractArray::add*/;
+  variable571 = NEW_parser___ReduceAction570___init(); /*new ReduceAction570*/
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable571) /*AbstractArray::add*/;
+  variable572 = NEW_parser___ReduceAction571___init(); /*new ReduceAction571*/
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable572) /*AbstractArray::add*/;
+  variable573 = NEW_parser___ReduceAction572___init(); /*new ReduceAction572*/
+  ((array___AbstractArray___add_t)CALL(variable0,COLOR_abstract_collection___SimpleCollection___add))(variable0, variable573) /*AbstractArray::add*/;
+  variable1 = NEW_array___Array___with(variable0); /*new Array[E]*/
   variable0 = variable1;
   ATTR_parser___Parser____reduce_table( self) /*Parser::_reduce_table*/ = variable0;
   tracehead = trace.prev;
   return;
 }
 void parser___SearchTokensVisitor___visit(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___SearchTokensVisitor___visit, 739};
+  struct trace_t trace = {NULL, LOCATE_parser, 744, LOCATE_parser___SearchTokensVisitor___visit};
   val_t variable0;
   val_t variable1;
       val_t variable2;
@@ -2316,10 +2328,10 @@ void parser___SearchTokensVisitor___visit(val_t  self, val_t  param0) {
   variable1 = TAG_Bool(( variable0 /*n*/==NIT_NULL) || VAL_ISA( variable0 /*n*/, COLOR_Token, ID_Token)) /*cast Token*/;
   if (UNTAG_Bool(variable1)) { /*if*/
     variable1 = TAG_Bool(( variable0 /*n*/==NIT_NULL) || VAL_ISA( variable0 /*n*/, COLOR_Token, ID_Token)) /*cast Token*/;
-    if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___SearchTokensVisitor___visit, 742); nit_exit(1);}
+    if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___SearchTokensVisitor___visit, LOCATE_parser, 747); nit_exit(1);}
     ATTR_parser___SearchTokensVisitor____last_token( self) /*SearchTokensVisitor::_last_token*/ =  variable0 /*n*/;
     variable1 = ATTR_parser___SearchTokensVisitor____untokenned_nodes( self) /*SearchTokensVisitor::_untokenned_nodes*/;
-    variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*Array::iterator*/;
+    variable1 = ((array___AbstractArray___iterator_t)CALL(variable1,COLOR_abstract_collection___Collection___iterator))(variable1) /*AbstractArray::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*/
@@ -2330,13 +2342,13 @@ void parser___SearchTokensVisitor___visit(val_t  self, val_t  param0) {
     }
     break_30: while(0);
     variable1 = ATTR_parser___SearchTokensVisitor____untokenned_nodes( self) /*SearchTokensVisitor::_untokenned_nodes*/;
-    ((array___AbstractArray___clear_t)CALL(variable1,COLOR_abstract_collection___RemovableCollection___clear))(variable1) /*Array::clear*/;
+    ((array___AbstractArray___clear_t)CALL(variable1,COLOR_abstract_collection___RemovableCollection___clear))(variable1) /*AbstractArray::clear*/;
   } else { /*if*/
     variable1 = TAG_Bool(( variable0 /*n*/==NIT_NULL) || VAL_ISA( variable0 /*n*/, COLOR_Prod, ID_Prod)) /*cast Prod*/;
-    if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___SearchTokensVisitor___visit, 749); nit_exit(1);}
+    if (!UNTAG_Bool(variable1)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___SearchTokensVisitor___visit, LOCATE_parser, 754); nit_exit(1);}
     variable1 = ATTR_parser___SearchTokensVisitor____untokenned_nodes( self) /*SearchTokensVisitor::_untokenned_nodes*/;
-    ((array___AbstractArray___add_t)CALL(variable1,COLOR_abstract_collection___SimpleCollection___add))(variable1,  variable0 /*n*/) /*Array::add*/;
-    ((parser_prod___PNode___visit_all_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___visit_all))( variable0 /*n*/,  self) /*Prod::visit_all*/;
+    ((array___AbstractArray___add_t)CALL(variable1,COLOR_abstract_collection___SimpleCollection___add))(variable1,  variable0 /*n*/) /*AbstractArray::add*/;
+    ((parser_prod___PNode___visit_all_t)CALL( variable0 /*n*/,COLOR_parser_prod___PNode___visit_all))( variable0 /*n*/,  self) /*PNode::visit_all*/;
     variable1 = ATTR_parser___SearchTokensVisitor____last_token( self) /*SearchTokensVisitor::_last_token*/;
     ((parser_prod___Prod___last_token__eq_t)CALL( variable0 /*n*/,COLOR_parser_prod___Prod___last_token__eq))( variable0 /*n*/, variable1) /*Prod::last_token=*/;
   }
@@ -2344,26 +2356,27 @@ void parser___SearchTokensVisitor___visit(val_t  self, val_t  param0) {
   return;
 }
 void parser___SearchTokensVisitor___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___SearchTokensVisitor___init, 755};
+  struct trace_t trace = {NULL, LOCATE_parser, 760, LOCATE_parser___SearchTokensVisitor___init};
   val_t variable0;
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_SearchTokensVisitor].i]) return;
-  variable0 = NEW_array___Array___init(); /*new Array[Prod]*/
+  variable0 = NEW_array___Array___init(); /*new Array[E]*/
   ATTR_parser___SearchTokensVisitor____untokenned_nodes( self) /*SearchTokensVisitor::_untokenned_nodes*/ = variable0;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_SearchTokensVisitor].i] = 1;
   tracehead = trace.prev;
   return;
 }
 void parser___ReduceAction___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction___action, 763};
+  struct trace_t trace = {NULL, LOCATE_parser, 768, LOCATE_parser___ReduceAction___action};
   trace.prev = tracehead; tracehead = &trace;
-  fprintf(stderr, "Deferred method %s called (%s: %d)\n", "action", LOCATE_parser___SearchTokensVisitor___init, 763);
+  fprintf(stderr, "Deferred method %s called");
+  fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___SearchTokensVisitor___init, LOCATE_parser, 768);
   nit_exit(1);
   tracehead = trace.prev;
   return;
 }
 void parser___ReduceAction0___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction0___action, 768};
+  struct trace_t trace = {NULL, LOCATE_parser, 773, LOCATE_parser___ReduceAction0___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -2373,9 +2386,9 @@ void parser___ReduceAction0___action(val_t  self, val_t  param0) {
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   variable1 =  NIT_NULL /*null*/;
-  variable3 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable3 = NEW_array___Array___init(); /*new Array[E]*/
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable5 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable2 /*listnode3*/,  variable3 /*listnode4*/); /*new AModule*/
   variable4 = variable5;
@@ -2386,7 +2399,7 @@ void parser___ReduceAction0___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction0___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction0___init, 781};
+  struct trace_t trace = {NULL, LOCATE_parser, 786, LOCATE_parser___ReduceAction0___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction0].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction0].i] = 1;
@@ -2394,7 +2407,7 @@ void parser___ReduceAction0___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction1___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction1___action, 785};
+  struct trace_t trace = {NULL, LOCATE_parser, 790, LOCATE_parser___ReduceAction1___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -2408,13 +2421,13 @@ void parser___ReduceAction1___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable2 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable5 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction1___action, 792); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction1___action, LOCATE_parser, 797); nit_exit(1);}
   variable7 = NEW_parser_prod___AModule___init_amodule( variable5 /*ppackagedeclnode2*/,  variable3 /*listnode3*/,  variable4 /*listnode4*/); /*new AModule*/
   variable6 = variable7;
   variable1 =  variable6 /*pmodulenode1*/ /*node_list=*/;
@@ -2424,7 +2437,7 @@ void parser___ReduceAction1___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction1___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction1___init, 801};
+  struct trace_t trace = {NULL, LOCATE_parser, 806, LOCATE_parser___ReduceAction1___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction1].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction1].i] = 1;
@@ -2432,7 +2445,7 @@ void parser___ReduceAction1___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction2___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction2___action, 805};
+  struct trace_t trace = {NULL, LOCATE_parser, 810, LOCATE_parser___ReduceAction2___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -2446,20 +2459,20 @@ void parser___ReduceAction2___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable2 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode3*/==NIT_NULL) || VAL_ISA( variable5 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction2___action, 812); nit_exit(1);}
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction2___action, LOCATE_parser, 817); nit_exit(1);}
+  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable6)) { /*if*/
-    variable6 = ((array___AbstractArray___is_empty_t)CALL( variable3 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable3 /*listnode4*/) /*Array::is_empty*/;
+    variable6 = ((array___AbstractArray___is_empty_t)CALL( variable3 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable3 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable6)) { /*if*/
       variable3 =  variable5 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable3 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable3 /*listnode4*/,  variable5 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable3 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable3 /*listnode4*/,  variable5 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable7 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable3 /*listnode4*/,  variable4 /*listnode5*/); /*new AModule*/
@@ -2471,7 +2484,7 @@ void parser___ReduceAction2___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction2___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction2___init, 828};
+  struct trace_t trace = {NULL, LOCATE_parser, 833, LOCATE_parser___ReduceAction2___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction2].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction2].i] = 1;
@@ -2479,7 +2492,7 @@ void parser___ReduceAction2___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction3___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction3___action, 832};
+  struct trace_t trace = {NULL, LOCATE_parser, 837, LOCATE_parser___ReduceAction3___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -2497,23 +2510,23 @@ void parser___ReduceAction3___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable6 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction3___action, 840); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction3___action, LOCATE_parser, 845); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*listnode3*/==NIT_NULL) || VAL_ISA( variable7 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction3___action, 842); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable7 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction3___action, LOCATE_parser, 847); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode4*/) /*Array::is_empty*/;
+    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable8)) { /*if*/
       variable4 =  variable7 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode4*/,  variable7 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode4*/,  variable7 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable9 = NEW_parser_prod___AModule___init_amodule( variable6 /*ppackagedeclnode2*/,  variable4 /*listnode4*/,  variable5 /*listnode5*/); /*new AModule*/
@@ -2525,7 +2538,7 @@ void parser___ReduceAction3___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction3___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction3___init, 858};
+  struct trace_t trace = {NULL, LOCATE_parser, 863, LOCATE_parser___ReduceAction3___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction3].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction3].i] = 1;
@@ -2533,7 +2546,7 @@ void parser___ReduceAction3___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction4___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction4___action, 862};
+  struct trace_t trace = {NULL, LOCATE_parser, 867, LOCATE_parser___ReduceAction4___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -2547,20 +2560,20 @@ void parser___ReduceAction4___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable2 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode4*/==NIT_NULL) || VAL_ISA( variable5 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction4___action, 869); nit_exit(1);}
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction4___action, LOCATE_parser, 874); nit_exit(1);}
+  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable6)) { /*if*/
-    variable6 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*Array::is_empty*/;
+    variable6 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable6)) { /*if*/
       variable4 =  variable5 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable5 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable5 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable7 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable3 /*listnode3*/,  variable4 /*listnode5*/); /*new AModule*/
@@ -2572,7 +2585,7 @@ void parser___ReduceAction4___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction4___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction4___init, 885};
+  struct trace_t trace = {NULL, LOCATE_parser, 890, LOCATE_parser___ReduceAction4___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction4].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction4].i] = 1;
@@ -2580,7 +2593,7 @@ void parser___ReduceAction4___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction5___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction5___action, 889};
+  struct trace_t trace = {NULL, LOCATE_parser, 894, LOCATE_parser___ReduceAction5___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -2598,23 +2611,23 @@ void parser___ReduceAction5___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable6 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction5___action, 897); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction5___action, LOCATE_parser, 902); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*listnode4*/==NIT_NULL) || VAL_ISA( variable7 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction5___action, 899); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction5___action, LOCATE_parser, 904); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*Array::is_empty*/;
+    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable8)) { /*if*/
       variable5 =  variable7 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable7 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable7 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable9 = NEW_parser_prod___AModule___init_amodule( variable6 /*ppackagedeclnode2*/,  variable4 /*listnode3*/,  variable5 /*listnode5*/); /*new AModule*/
@@ -2626,7 +2639,7 @@ void parser___ReduceAction5___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction5___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction5___init, 915};
+  struct trace_t trace = {NULL, LOCATE_parser, 920, LOCATE_parser___ReduceAction5___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction5].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction5].i] = 1;
@@ -2634,7 +2647,7 @@ void parser___ReduceAction5___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction6___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction6___action, 919};
+  struct trace_t trace = {NULL, LOCATE_parser, 924, LOCATE_parser___ReduceAction6___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -2652,32 +2665,32 @@ void parser___ReduceAction6___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*listnode3*/==NIT_NULL) || VAL_ISA( variable6 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction6___action, 927); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable6 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction6___action, LOCATE_parser, 932); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode4*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable6 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode4*/,  variable6 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode4*/,  variable6 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable7 =  variable2 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*listnode5*/==NIT_NULL) || VAL_ISA( variable7 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction6___action, 936); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable7 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction6___action, LOCATE_parser, 941); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode6*/) /*Array::is_empty*/;
+    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable8)) { /*if*/
       variable5 =  variable7 /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode6*/,  variable7 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode6*/,  variable7 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable9 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable4 /*listnode4*/,  variable5 /*listnode6*/); /*new AModule*/
@@ -2689,7 +2702,7 @@ void parser___ReduceAction6___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction6___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction6___init, 952};
+  struct trace_t trace = {NULL, LOCATE_parser, 957, LOCATE_parser___ReduceAction6___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction6].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction6].i] = 1;
@@ -2697,7 +2710,7 @@ void parser___ReduceAction6___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction7___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction7___action, 956};
+  struct trace_t trace = {NULL, LOCATE_parser, 961, LOCATE_parser___ReduceAction7___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -2719,35 +2732,35 @@ void parser___ReduceAction7___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable4 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable7 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction7___action, 965); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction7___action, LOCATE_parser, 970); nit_exit(1);}
   variable8 =  variable3 /*nodearraylist2*/;
   variable9 = TAG_Bool(( variable8 /*listnode3*/==NIT_NULL) || VAL_ISA( variable8 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction7___action, 967); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction7___action, LOCATE_parser, 972); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode4*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable5 =  variable8 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode4*/,  variable8 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode4*/,  variable8 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable9 =  variable2 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*listnode5*/==NIT_NULL) || VAL_ISA( variable9 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction7___action, 976); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction7___action, LOCATE_parser, 981); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode6*/) /*Array::is_empty*/;
+    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable10)) { /*if*/
       variable6 =  variable9 /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode6*/,  variable9 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode6*/,  variable9 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable11 = NEW_parser_prod___AModule___init_amodule( variable7 /*ppackagedeclnode2*/,  variable5 /*listnode4*/,  variable6 /*listnode6*/); /*new AModule*/
@@ -2759,7 +2772,7 @@ void parser___ReduceAction7___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction7___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction7___init, 992};
+  struct trace_t trace = {NULL, LOCATE_parser, 997, LOCATE_parser___ReduceAction7___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction7].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction7].i] = 1;
@@ -2767,7 +2780,7 @@ void parser___ReduceAction7___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction8___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction8___action, 996};
+  struct trace_t trace = {NULL, LOCATE_parser, 1001, LOCATE_parser___ReduceAction8___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -2786,24 +2799,24 @@ void parser___ReduceAction8___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable3 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable7 /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction8___action, 1005); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable7 /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable7 /*ppropdefnode5*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction8___action, LOCATE_parser, 1010); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable7 /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable7 /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode6*/,  variable7 /*ppropdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode6*/,  variable7 /*ppropdefnode5*/) /*AbstractArray::add*/;
   }
   variable9 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable6 /*listnode6*/); /*new ATopClassdef*/
   variable8 = variable9;
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable5 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*listnode7*/,  variable8 /*pclassdefnode4*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable5 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*listnode7*/,  variable8 /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
   variable10 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable4 /*listnode3*/,  variable5 /*listnode7*/); /*new AModule*/
   variable9 = variable10;
@@ -2814,7 +2827,7 @@ void parser___ReduceAction8___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction8___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction8___init, 1023};
+  struct trace_t trace = {NULL, LOCATE_parser, 1028, LOCATE_parser___ReduceAction8___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction8].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction8].i] = 1;
@@ -2822,7 +2835,7 @@ void parser___ReduceAction8___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction9___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction9___action, 1027};
+  struct trace_t trace = {NULL, LOCATE_parser, 1032, LOCATE_parser___ReduceAction9___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -2845,36 +2858,36 @@ void parser___ReduceAction9___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable4 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable8 /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction9___action, 1037); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction9___action, LOCATE_parser, 1042); nit_exit(1);}
   variable9 =  variable2 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*listnode6*/==NIT_NULL) || VAL_ISA( variable9 /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction9___action, 1039); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable8 /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable8 /*ppropdefnode5*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction9___action, LOCATE_parser, 1044); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable8 /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable8 /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode7*/,  variable8 /*ppropdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode7*/,  variable8 /*ppropdefnode5*/) /*AbstractArray::add*/;
   }
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode6*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode6*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode7*/) /*Array::is_empty*/;
+    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable10)) { /*if*/
       variable7 =  variable9 /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode7*/,  variable9 /*listnode6*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode7*/,  variable9 /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable11 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable7 /*listnode7*/); /*new ATopClassdef*/
   variable10 = variable11;
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable6 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode8*/,  variable10 /*pclassdefnode4*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable6 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode8*/,  variable10 /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
   variable12 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable5 /*listnode3*/,  variable6 /*listnode8*/); /*new AModule*/
   variable11 = variable12;
@@ -2885,7 +2898,7 @@ void parser___ReduceAction9___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction9___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction9___init, 1064};
+  struct trace_t trace = {NULL, LOCATE_parser, 1069, LOCATE_parser___ReduceAction9___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction9].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction9].i] = 1;
@@ -2893,7 +2906,7 @@ void parser___ReduceAction9___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction10___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction10___action, 1068};
+  struct trace_t trace = {NULL, LOCATE_parser, 1073, LOCATE_parser___ReduceAction10___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -2916,27 +2929,27 @@ void parser___ReduceAction10___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable4 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable7 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction10___action, 1077); nit_exit(1);}
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction10___action, LOCATE_parser, 1082); nit_exit(1);}
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable3 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable9 /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction10___action, 1080); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*ppropdefnode5*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction10___action, LOCATE_parser, 1085); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode6*/,  variable9 /*ppropdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode6*/,  variable9 /*ppropdefnode5*/) /*AbstractArray::add*/;
   }
   variable11 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable8 /*listnode6*/); /*new ATopClassdef*/
   variable10 = variable11;
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable6 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode7*/,  variable10 /*pclassdefnode4*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable6 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode7*/,  variable10 /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
   variable12 = NEW_parser_prod___AModule___init_amodule( variable7 /*ppackagedeclnode2*/,  variable5 /*listnode3*/,  variable6 /*listnode7*/); /*new AModule*/
   variable11 = variable12;
@@ -2947,7 +2960,7 @@ void parser___ReduceAction10___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction10___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction10___init, 1098};
+  struct trace_t trace = {NULL, LOCATE_parser, 1103, LOCATE_parser___ReduceAction10___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction10].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction10].i] = 1;
@@ -2955,7 +2968,7 @@ void parser___ReduceAction10___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction11___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction11___action, 1102};
+  struct trace_t trace = {NULL, LOCATE_parser, 1107, LOCATE_parser___ReduceAction11___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -2982,39 +2995,39 @@ void parser___ReduceAction11___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable5 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable8 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction11___action, 1112); nit_exit(1);}
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction11___action, LOCATE_parser, 1117); nit_exit(1);}
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
   variable10 =  variable4 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable10 /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction11___action, 1115); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction11___action, LOCATE_parser, 1120); nit_exit(1);}
   variable11 =  variable2 /*nodearraylist4*/;
   variable12 = TAG_Bool(( variable11 /*listnode6*/==NIT_NULL) || VAL_ISA( variable11 /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction11___action, 1117); nit_exit(1);}
-  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable10 /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable10 /*ppropdefnode5*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction11___action, LOCATE_parser, 1122); nit_exit(1);}
+  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable10 /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable10 /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable12)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable9 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode7*/,  variable10 /*ppropdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable9 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode7*/,  variable10 /*ppropdefnode5*/) /*AbstractArray::add*/;
   }
-  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode6*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable11 /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode6*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable12)) { /*if*/
-    variable12 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode7*/) /*Array::is_empty*/;
+    variable12 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable12)) { /*if*/
       variable9 =  variable11 /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode7*/,  variable11 /*listnode6*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode7*/,  variable11 /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable13 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable9 /*listnode7*/); /*new ATopClassdef*/
   variable12 = variable13;
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode8*/,  variable12 /*pclassdefnode4*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode8*/,  variable12 /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
   variable14 = NEW_parser_prod___AModule___init_amodule( variable8 /*ppackagedeclnode2*/,  variable6 /*listnode3*/,  variable7 /*listnode8*/); /*new AModule*/
   variable13 = variable14;
@@ -3025,7 +3038,7 @@ void parser___ReduceAction11___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction11___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction11___init, 1142};
+  struct trace_t trace = {NULL, LOCATE_parser, 1147, LOCATE_parser___ReduceAction11___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction11].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction11].i] = 1;
@@ -3033,7 +3046,7 @@ void parser___ReduceAction11___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction12___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction12___action, 1146};
+  struct trace_t trace = {NULL, LOCATE_parser, 1151, LOCATE_parser___ReduceAction12___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -3056,36 +3069,36 @@ void parser___ReduceAction12___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable4 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*listnode3*/==NIT_NULL) || VAL_ISA( variable7 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction12___action, 1155); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable7 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction12___action, LOCATE_parser, 1160); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode4*/) /*Array::is_empty*/;
+    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable8)) { /*if*/
       variable5 =  variable7 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode4*/,  variable7 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode4*/,  variable7 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable3 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable9 /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction12___action, 1165); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable9 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable9 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction12___action, LOCATE_parser, 1170); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable9 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable9 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode7*/,  variable9 /*ppropdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode7*/,  variable9 /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
   variable11 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable8 /*listnode7*/); /*new ATopClassdef*/
   variable10 = variable11;
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable10 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable10 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable10 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable10 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable6 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode8*/,  variable10 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable6 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode8*/,  variable10 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable12 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable5 /*listnode4*/,  variable6 /*listnode8*/); /*new AModule*/
   variable11 = variable12;
@@ -3096,7 +3109,7 @@ void parser___ReduceAction12___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction12___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction12___init, 1183};
+  struct trace_t trace = {NULL, LOCATE_parser, 1188, LOCATE_parser___ReduceAction12___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction12].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction12].i] = 1;
@@ -3104,7 +3117,7 @@ void parser___ReduceAction12___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction13___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction13___action, 1187};
+  struct trace_t trace = {NULL, LOCATE_parser, 1192, LOCATE_parser___ReduceAction13___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -3131,48 +3144,48 @@ void parser___ReduceAction13___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable5 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*listnode3*/==NIT_NULL) || VAL_ISA( variable8 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction13___action, 1197); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction13___action, LOCATE_parser, 1202); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode4*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable6 =  variable8 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode4*/,  variable8 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode4*/,  variable8 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
   variable10 =  variable4 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable10 /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction13___action, 1207); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction13___action, LOCATE_parser, 1212); nit_exit(1);}
   variable11 =  variable2 /*nodearraylist4*/;
   variable12 = TAG_Bool(( variable11 /*listnode7*/==NIT_NULL) || VAL_ISA( variable11 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction13___action, 1209); nit_exit(1);}
-  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable10 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable10 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction13___action, LOCATE_parser, 1214); nit_exit(1);}
+  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable10 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable10 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable12)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable9 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode8*/,  variable10 /*ppropdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable9 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode8*/,  variable10 /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
-  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable11 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable12)) { /*if*/
-    variable12 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode8*/) /*Array::is_empty*/;
+    variable12 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable12)) { /*if*/
       variable9 =  variable11 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode8*/,  variable11 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode8*/,  variable11 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable13 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable9 /*listnode8*/); /*new ATopClassdef*/
   variable12 = variable13;
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable12 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable12 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable14 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable6 /*listnode4*/,  variable7 /*listnode9*/); /*new AModule*/
   variable13 = variable14;
@@ -3183,7 +3196,7 @@ void parser___ReduceAction13___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction13___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction13___init, 1234};
+  struct trace_t trace = {NULL, LOCATE_parser, 1239, LOCATE_parser___ReduceAction13___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction13].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction13].i] = 1;
@@ -3191,7 +3204,7 @@ void parser___ReduceAction13___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction14___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction14___action, 1238};
+  struct trace_t trace = {NULL, LOCATE_parser, 1243, LOCATE_parser___ReduceAction14___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -3218,39 +3231,39 @@ void parser___ReduceAction14___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable5 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable8 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction14___action, 1248); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction14___action, LOCATE_parser, 1253); nit_exit(1);}
   variable9 =  variable4 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*listnode3*/==NIT_NULL) || VAL_ISA( variable9 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction14___action, 1250); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction14___action, LOCATE_parser, 1255); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode4*/) /*Array::is_empty*/;
+    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable10)) { /*if*/
       variable6 =  variable9 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode4*/,  variable9 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode4*/,  variable9 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
-  variable11 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable11 = NEW_array___Array___init(); /*new Array[E]*/
   variable10 = variable11;
   variable11 =  variable3 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable11 /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction14___action, 1260); nit_exit(1);}
-  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable11 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable11 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction14___action, LOCATE_parser, 1265); nit_exit(1);}
+  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable11 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable11 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable12)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable10 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable10 /*listnode7*/,  variable11 /*ppropdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable10 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable10 /*listnode7*/,  variable11 /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
   variable13 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable10 /*listnode7*/); /*new ATopClassdef*/
   variable12 = variable13;
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode8*/,  variable12 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode8*/,  variable12 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable14 = NEW_parser_prod___AModule___init_amodule( variable8 /*ppackagedeclnode2*/,  variable6 /*listnode4*/,  variable7 /*listnode8*/); /*new AModule*/
   variable13 = variable14;
@@ -3261,7 +3274,7 @@ void parser___ReduceAction14___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction14___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction14___init, 1278};
+  struct trace_t trace = {NULL, LOCATE_parser, 1283, LOCATE_parser___ReduceAction14___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction14].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction14].i] = 1;
@@ -3269,7 +3282,7 @@ void parser___ReduceAction14___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction15___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction15___action, 1282};
+  struct trace_t trace = {NULL, LOCATE_parser, 1287, LOCATE_parser___ReduceAction15___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -3300,51 +3313,51 @@ void parser___ReduceAction15___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable6 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable9 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction15___action, 1293); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction15___action, LOCATE_parser, 1298); nit_exit(1);}
   variable10 =  variable5 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*listnode3*/==NIT_NULL) || VAL_ISA( variable10 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction15___action, 1295); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction15___action, LOCATE_parser, 1300); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode4*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable7 =  variable10 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode4*/,  variable10 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode4*/,  variable10 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
-  variable12 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable12 = NEW_array___Array___init(); /*new Array[E]*/
   variable11 = variable12;
   variable12 =  variable4 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable12 /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction15___action, 1305); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction15___action, LOCATE_parser, 1310); nit_exit(1);}
   variable13 =  variable2 /*nodearraylist5*/;
   variable14 = TAG_Bool(( variable13 /*listnode7*/==NIT_NULL) || VAL_ISA( variable13 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction15___action, 1307); nit_exit(1);}
-  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable12 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable12 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction15___action, LOCATE_parser, 1312); nit_exit(1);}
+  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable12 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable12 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable14)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable11 /*listnode8*/,  variable12 /*ppropdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable11 /*listnode8*/,  variable12 /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
-  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable13 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable13 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable13 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable13 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable13 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable14)) { /*if*/
-    variable14 = ((array___AbstractArray___is_empty_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable11 /*listnode8*/) /*Array::is_empty*/;
+    variable14 = ((array___AbstractArray___is_empty_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable11 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable14)) { /*if*/
       variable11 =  variable13 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable11 /*listnode8*/,  variable13 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable11 /*listnode8*/,  variable13 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable15 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable11 /*listnode8*/); /*new ATopClassdef*/
   variable14 = variable15;
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable14 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable14 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable16 = NEW_parser_prod___AModule___init_amodule( variable9 /*ppackagedeclnode2*/,  variable7 /*listnode4*/,  variable8 /*listnode9*/); /*new AModule*/
   variable15 = variable16;
@@ -3355,7 +3368,7 @@ void parser___ReduceAction15___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction15___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction15___init, 1332};
+  struct trace_t trace = {NULL, LOCATE_parser, 1337, LOCATE_parser___ReduceAction15___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction15].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction15].i] = 1;
@@ -3363,7 +3376,7 @@ void parser___ReduceAction15___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction16___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction16___action, 1336};
+  struct trace_t trace = {NULL, LOCATE_parser, 1341, LOCATE_parser___ReduceAction16___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -3386,36 +3399,36 @@ void parser___ReduceAction16___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable4 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*listnode4*/==NIT_NULL) || VAL_ISA( variable7 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction16___action, 1345); nit_exit(1);}
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction16___action, LOCATE_parser, 1350); nit_exit(1);}
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable3 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable9 /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction16___action, 1348); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable9 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable9 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction16___action, LOCATE_parser, 1353); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable9 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable9 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode7*/,  variable9 /*ppropdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode7*/,  variable9 /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
   variable11 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable8 /*listnode7*/); /*new ATopClassdef*/
   variable10 = variable11;
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode8*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable6 =  variable7 /*listnode4*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode8*/,  variable7 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode8*/,  variable7 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable10 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable10 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable10 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable10 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable6 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode8*/,  variable10 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable6 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode8*/,  variable10 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable12 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable5 /*listnode3*/,  variable6 /*listnode8*/); /*new AModule*/
   variable11 = variable12;
@@ -3426,7 +3439,7 @@ void parser___ReduceAction16___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction16___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction16___init, 1373};
+  struct trace_t trace = {NULL, LOCATE_parser, 1378, LOCATE_parser___ReduceAction16___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction16].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction16].i] = 1;
@@ -3434,7 +3447,7 @@ void parser___ReduceAction16___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction17___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction17___action, 1377};
+  struct trace_t trace = {NULL, LOCATE_parser, 1382, LOCATE_parser___ReduceAction17___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -3461,48 +3474,48 @@ void parser___ReduceAction17___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable5 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*listnode4*/==NIT_NULL) || VAL_ISA( variable8 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction17___action, 1387); nit_exit(1);}
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction17___action, LOCATE_parser, 1392); nit_exit(1);}
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
   variable10 =  variable4 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable10 /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction17___action, 1390); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction17___action, LOCATE_parser, 1395); nit_exit(1);}
   variable11 =  variable2 /*nodearraylist4*/;
   variable12 = TAG_Bool(( variable11 /*listnode7*/==NIT_NULL) || VAL_ISA( variable11 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction17___action, 1392); nit_exit(1);}
-  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable10 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable10 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction17___action, LOCATE_parser, 1397); nit_exit(1);}
+  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable10 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable10 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable12)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable9 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode8*/,  variable10 /*ppropdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable9 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode8*/,  variable10 /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
-  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable11 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable12)) { /*if*/
-    variable12 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode8*/) /*Array::is_empty*/;
+    variable12 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable12)) { /*if*/
       variable9 =  variable11 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode8*/,  variable11 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode8*/,  variable11 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable13 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable9 /*listnode8*/); /*new ATopClassdef*/
   variable12 = variable13;
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode9*/) /*Array::is_empty*/;
+    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable13)) { /*if*/
       variable7 =  variable8 /*listnode4*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode9*/,  variable8 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode9*/,  variable8 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable12 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable12 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable14 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable6 /*listnode3*/,  variable7 /*listnode9*/); /*new AModule*/
   variable13 = variable14;
@@ -3513,7 +3526,7 @@ void parser___ReduceAction17___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction17___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction17___init, 1424};
+  struct trace_t trace = {NULL, LOCATE_parser, 1429, LOCATE_parser___ReduceAction17___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction17].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction17].i] = 1;
@@ -3521,7 +3534,7 @@ void parser___ReduceAction17___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction18___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction18___action, 1428};
+  struct trace_t trace = {NULL, LOCATE_parser, 1433, LOCATE_parser___ReduceAction18___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -3548,39 +3561,39 @@ void parser___ReduceAction18___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable5 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable8 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction18___action, 1438); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction18___action, LOCATE_parser, 1443); nit_exit(1);}
   variable9 =  variable4 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*listnode4*/==NIT_NULL) || VAL_ISA( variable9 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction18___action, 1440); nit_exit(1);}
-  variable11 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction18___action, LOCATE_parser, 1445); nit_exit(1);}
+  variable11 = NEW_array___Array___init(); /*new Array[E]*/
   variable10 = variable11;
   variable11 =  variable3 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable11 /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction18___action, 1443); nit_exit(1);}
-  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable11 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable11 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction18___action, LOCATE_parser, 1448); nit_exit(1);}
+  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable11 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable11 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable12)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable10 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable10 /*listnode7*/,  variable11 /*ppropdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable10 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable10 /*listnode7*/,  variable11 /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
   variable13 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable10 /*listnode7*/); /*new ATopClassdef*/
   variable12 = variable13;
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode8*/) /*Array::is_empty*/;
+    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable13)) { /*if*/
       variable7 =  variable9 /*listnode4*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode8*/,  variable9 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode8*/,  variable9 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode8*/,  variable12 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode8*/,  variable12 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable14 = NEW_parser_prod___AModule___init_amodule( variable8 /*ppackagedeclnode2*/,  variable6 /*listnode3*/,  variable7 /*listnode8*/); /*new AModule*/
   variable13 = variable14;
@@ -3591,7 +3604,7 @@ void parser___ReduceAction18___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction18___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction18___init, 1468};
+  struct trace_t trace = {NULL, LOCATE_parser, 1473, LOCATE_parser___ReduceAction18___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction18].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction18].i] = 1;
@@ -3599,7 +3612,7 @@ void parser___ReduceAction18___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction19___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction19___action, 1472};
+  struct trace_t trace = {NULL, LOCATE_parser, 1477, LOCATE_parser___ReduceAction19___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -3630,51 +3643,51 @@ void parser___ReduceAction19___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable6 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable9 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction19___action, 1483); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction19___action, LOCATE_parser, 1488); nit_exit(1);}
   variable10 =  variable5 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*listnode4*/==NIT_NULL) || VAL_ISA( variable10 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction19___action, 1485); nit_exit(1);}
-  variable12 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction19___action, LOCATE_parser, 1490); nit_exit(1);}
+  variable12 = NEW_array___Array___init(); /*new Array[E]*/
   variable11 = variable12;
   variable12 =  variable4 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable12 /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction19___action, 1488); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction19___action, LOCATE_parser, 1493); nit_exit(1);}
   variable13 =  variable2 /*nodearraylist5*/;
   variable14 = TAG_Bool(( variable13 /*listnode7*/==NIT_NULL) || VAL_ISA( variable13 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction19___action, 1490); nit_exit(1);}
-  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable12 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable12 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction19___action, LOCATE_parser, 1495); nit_exit(1);}
+  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable12 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable12 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable14)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable11 /*listnode8*/,  variable12 /*ppropdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable11 /*listnode8*/,  variable12 /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
-  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable13 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable13 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable13 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable13 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable13 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable14)) { /*if*/
-    variable14 = ((array___AbstractArray___is_empty_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable11 /*listnode8*/) /*Array::is_empty*/;
+    variable14 = ((array___AbstractArray___is_empty_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable11 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable14)) { /*if*/
       variable11 =  variable13 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable11 /*listnode8*/,  variable13 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable11 /*listnode8*/,  variable13 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable15 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable11 /*listnode8*/); /*new ATopClassdef*/
   variable14 = variable15;
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode9*/) /*Array::is_empty*/;
+    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable15)) { /*if*/
       variable8 =  variable10 /*listnode4*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode9*/,  variable10 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode9*/,  variable10 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable14 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable14 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable16 = NEW_parser_prod___AModule___init_amodule( variable9 /*ppackagedeclnode2*/,  variable7 /*listnode3*/,  variable8 /*listnode9*/); /*new AModule*/
   variable15 = variable16;
@@ -3685,7 +3698,7 @@ void parser___ReduceAction19___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction19___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction19___init, 1522};
+  struct trace_t trace = {NULL, LOCATE_parser, 1527, LOCATE_parser___ReduceAction19___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction19].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction19].i] = 1;
@@ -3693,7 +3706,7 @@ void parser___ReduceAction19___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction20___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction20___action, 1526};
+  struct trace_t trace = {NULL, LOCATE_parser, 1531, LOCATE_parser___ReduceAction20___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -3720,48 +3733,48 @@ void parser___ReduceAction20___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable5 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*listnode3*/==NIT_NULL) || VAL_ISA( variable8 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction20___action, 1536); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction20___action, LOCATE_parser, 1541); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode4*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable6 =  variable8 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode4*/,  variable8 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode4*/,  variable8 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable9 =  variable4 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*listnode5*/==NIT_NULL) || VAL_ISA( variable9 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction20___action, 1545); nit_exit(1);}
-  variable11 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction20___action, LOCATE_parser, 1550); nit_exit(1);}
+  variable11 = NEW_array___Array___init(); /*new Array[E]*/
   variable10 = variable11;
   variable11 =  variable3 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable11 /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction20___action, 1548); nit_exit(1);}
-  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable11 /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable11 /*ppropdefnode7*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction20___action, LOCATE_parser, 1553); nit_exit(1);}
+  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable11 /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable11 /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable12)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable10 /*listnode8*/,  variable11 /*ppropdefnode7*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable10 /*listnode8*/,  variable11 /*ppropdefnode7*/) /*AbstractArray::add*/;
   }
   variable13 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable10 /*listnode8*/); /*new ATopClassdef*/
   variable12 = variable13;
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode9*/) /*Array::is_empty*/;
+    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable13)) { /*if*/
       variable7 =  variable9 /*listnode5*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode9*/,  variable9 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode9*/,  variable9 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable12 /*pclassdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable12 /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
   variable14 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable6 /*listnode4*/,  variable7 /*listnode9*/); /*new AModule*/
   variable13 = variable14;
@@ -3772,7 +3785,7 @@ void parser___ReduceAction20___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction20___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction20___init, 1573};
+  struct trace_t trace = {NULL, LOCATE_parser, 1578, LOCATE_parser___ReduceAction20___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction20].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction20].i] = 1;
@@ -3780,7 +3793,7 @@ void parser___ReduceAction20___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction21___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction21___action, 1577};
+  struct trace_t trace = {NULL, LOCATE_parser, 1582, LOCATE_parser___ReduceAction21___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -3811,60 +3824,60 @@ void parser___ReduceAction21___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable6 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*listnode3*/==NIT_NULL) || VAL_ISA( variable9 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction21___action, 1588); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction21___action, LOCATE_parser, 1593); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode4*/) /*Array::is_empty*/;
+    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable10)) { /*if*/
       variable7 =  variable9 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode4*/,  variable9 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode4*/,  variable9 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable10 =  variable5 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*listnode5*/==NIT_NULL) || VAL_ISA( variable10 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction21___action, 1597); nit_exit(1);}
-  variable12 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction21___action, LOCATE_parser, 1602); nit_exit(1);}
+  variable12 = NEW_array___Array___init(); /*new Array[E]*/
   variable11 = variable12;
   variable12 =  variable4 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable12 /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction21___action, 1600); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction21___action, LOCATE_parser, 1605); nit_exit(1);}
   variable13 =  variable2 /*nodearraylist5*/;
   variable14 = TAG_Bool(( variable13 /*listnode8*/==NIT_NULL) || VAL_ISA( variable13 /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction21___action, 1602); nit_exit(1);}
-  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable12 /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable12 /*ppropdefnode7*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction21___action, LOCATE_parser, 1607); nit_exit(1);}
+  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable12 /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable12 /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable14)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable11 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable11 /*listnode9*/,  variable12 /*ppropdefnode7*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable11 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable11 /*listnode9*/,  variable12 /*ppropdefnode7*/) /*AbstractArray::add*/;
   }
-  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable13 /*listnode8*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable13 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable13 /*listnode8*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable13 /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable13 /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable14)) { /*if*/
-    variable14 = ((array___AbstractArray___is_empty_t)CALL( variable11 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable11 /*listnode9*/) /*Array::is_empty*/;
+    variable14 = ((array___AbstractArray___is_empty_t)CALL( variable11 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable11 /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable14)) { /*if*/
       variable11 =  variable13 /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable11 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable11 /*listnode9*/,  variable13 /*listnode8*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable11 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable11 /*listnode9*/,  variable13 /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable15 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable11 /*listnode9*/); /*new ATopClassdef*/
   variable14 = variable15;
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode10*/) /*Array::is_empty*/;
+    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable15)) { /*if*/
       variable8 =  variable10 /*listnode5*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode10*/,  variable10 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode10*/,  variable10 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode10*/,  variable14 /*pclassdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode10*/,  variable14 /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
   variable16 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable7 /*listnode4*/,  variable8 /*listnode10*/); /*new AModule*/
   variable15 = variable16;
@@ -3875,7 +3888,7 @@ void parser___ReduceAction21___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction21___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction21___init, 1634};
+  struct trace_t trace = {NULL, LOCATE_parser, 1639, LOCATE_parser___ReduceAction21___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction21].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction21].i] = 1;
@@ -3883,7 +3896,7 @@ void parser___ReduceAction21___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction22___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction22___action, 1638};
+  struct trace_t trace = {NULL, LOCATE_parser, 1643, LOCATE_parser___ReduceAction22___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -3914,51 +3927,51 @@ void parser___ReduceAction22___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable6 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable9 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction22___action, 1649); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction22___action, LOCATE_parser, 1654); nit_exit(1);}
   variable10 =  variable5 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*listnode3*/==NIT_NULL) || VAL_ISA( variable10 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction22___action, 1651); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction22___action, LOCATE_parser, 1656); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode4*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable7 =  variable10 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode4*/,  variable10 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode4*/,  variable10 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable11 =  variable4 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*listnode5*/==NIT_NULL) || VAL_ISA( variable11 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction22___action, 1660); nit_exit(1);}
-  variable13 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction22___action, LOCATE_parser, 1665); nit_exit(1);}
+  variable13 = NEW_array___Array___init(); /*new Array[E]*/
   variable12 = variable13;
   variable13 =  variable3 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable13 /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction22___action, 1663); nit_exit(1);}
-  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable13 /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable13 /*ppropdefnode7*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction22___action, LOCATE_parser, 1668); nit_exit(1);}
+  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable13 /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable13 /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable14)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable12 /*listnode8*/,  variable13 /*ppropdefnode7*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable12 /*listnode8*/,  variable13 /*ppropdefnode7*/) /*AbstractArray::add*/;
   }
   variable15 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable12 /*listnode8*/); /*new ATopClassdef*/
   variable14 = variable15;
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable11 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode9*/) /*Array::is_empty*/;
+    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable15)) { /*if*/
       variable8 =  variable11 /*listnode5*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode9*/,  variable11 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode9*/,  variable11 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable14 /*pclassdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable14 /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
   variable16 = NEW_parser_prod___AModule___init_amodule( variable9 /*ppackagedeclnode2*/,  variable7 /*listnode4*/,  variable8 /*listnode9*/); /*new AModule*/
   variable15 = variable16;
@@ -3969,7 +3982,7 @@ void parser___ReduceAction22___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction22___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction22___init, 1688};
+  struct trace_t trace = {NULL, LOCATE_parser, 1693, LOCATE_parser___ReduceAction22___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction22].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction22].i] = 1;
@@ -3977,7 +3990,7 @@ void parser___ReduceAction22___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction23___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction23___action, 1692};
+  struct trace_t trace = {NULL, LOCATE_parser, 1697, LOCATE_parser___ReduceAction23___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -4012,63 +4025,63 @@ void parser___ReduceAction23___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable8 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
   variable10 =  variable7 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable10 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction23___action, 1704); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction23___action, LOCATE_parser, 1709); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*listnode3*/==NIT_NULL) || VAL_ISA( variable11 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction23___action, 1706); nit_exit(1);}
-  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable11 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction23___action, LOCATE_parser, 1711); nit_exit(1);}
+  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable12)) { /*if*/
-    variable12 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode4*/) /*Array::is_empty*/;
+    variable12 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable12)) { /*if*/
       variable8 =  variable11 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode4*/,  variable11 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode4*/,  variable11 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable12 =  variable5 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*listnode5*/==NIT_NULL) || VAL_ISA( variable12 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction23___action, 1715); nit_exit(1);}
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction23___action, LOCATE_parser, 1720); nit_exit(1);}
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
   variable14 =  variable4 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable14 /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction23___action, 1718); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction23___action, LOCATE_parser, 1723); nit_exit(1);}
   variable15 =  variable2 /*nodearraylist6*/;
   variable16 = TAG_Bool(( variable15 /*listnode8*/==NIT_NULL) || VAL_ISA( variable15 /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction23___action, 1720); nit_exit(1);}
-  variable16 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable14 /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable14 /*ppropdefnode7*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction23___action, LOCATE_parser, 1725); nit_exit(1);}
+  variable16 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable14 /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable14 /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable16)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable13 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable13 /*listnode9*/,  variable14 /*ppropdefnode7*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable13 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable13 /*listnode9*/,  variable14 /*ppropdefnode7*/) /*AbstractArray::add*/;
   }
-  variable16 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable15 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable15 /*listnode8*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable15 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable15 /*listnode8*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable16 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable15 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable15 /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable15 /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable15 /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable15 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable15 /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable16)) { /*if*/
-    variable16 = ((array___AbstractArray___is_empty_t)CALL( variable13 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable13 /*listnode9*/) /*Array::is_empty*/;
+    variable16 = ((array___AbstractArray___is_empty_t)CALL( variable13 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable13 /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable16)) { /*if*/
       variable13 =  variable15 /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable13 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable13 /*listnode9*/,  variable15 /*listnode8*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable13 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable13 /*listnode9*/,  variable15 /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable17 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable13 /*listnode9*/); /*new ATopClassdef*/
   variable16 = variable17;
-  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable12 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable12 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable12 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable12 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable12 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable17)) { /*if*/
-    variable17 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode10*/) /*Array::is_empty*/;
+    variable17 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable17)) { /*if*/
       variable9 =  variable12 /*listnode5*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode10*/,  variable12 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode10*/,  variable12 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable16 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable16 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable16 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable16 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable16 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable16 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable16 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable16 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable17)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode10*/,  variable16 /*pclassdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode10*/,  variable16 /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
   variable18 = NEW_parser_prod___AModule___init_amodule( variable10 /*ppackagedeclnode2*/,  variable8 /*listnode4*/,  variable9 /*listnode10*/); /*new AModule*/
   variable17 = variable18;
@@ -4079,7 +4092,7 @@ void parser___ReduceAction23___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction23___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction23___init, 1752};
+  struct trace_t trace = {NULL, LOCATE_parser, 1757, LOCATE_parser___ReduceAction23___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction23].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction23].i] = 1;
@@ -4087,7 +4100,7 @@ void parser___ReduceAction23___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction24___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction24___action, 1756};
+  struct trace_t trace = {NULL, LOCATE_parser, 1761, LOCATE_parser___ReduceAction24___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -4101,16 +4114,16 @@ void parser___ReduceAction24___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable2 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*pclassdefnode4*/==NIT_NULL) || VAL_ISA( variable5 /*pclassdefnode4*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction24___action, 1763); nit_exit(1);}
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable5 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable5 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction24___action, LOCATE_parser, 1768); nit_exit(1);}
+  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable5 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable5 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable6)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode5*/,  variable5 /*pclassdefnode4*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode5*/,  variable5 /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
   variable7 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable3 /*listnode3*/,  variable4 /*listnode5*/); /*new AModule*/
   variable6 = variable7;
@@ -4121,7 +4134,7 @@ void parser___ReduceAction24___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction24___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction24___init, 1775};
+  struct trace_t trace = {NULL, LOCATE_parser, 1780, LOCATE_parser___ReduceAction24___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction24].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction24].i] = 1;
@@ -4129,7 +4142,7 @@ void parser___ReduceAction24___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction25___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction25___action, 1779};
+  struct trace_t trace = {NULL, LOCATE_parser, 1784, LOCATE_parser___ReduceAction25___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -4147,19 +4160,19 @@ void parser___ReduceAction25___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable6 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction25___action, 1787); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction25___action, LOCATE_parser, 1792); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*pclassdefnode4*/==NIT_NULL) || VAL_ISA( variable7 /*pclassdefnode4*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction25___action, 1789); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction25___action, LOCATE_parser, 1794); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*listnode5*/,  variable7 /*pclassdefnode4*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*listnode5*/,  variable7 /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
   variable9 = NEW_parser_prod___AModule___init_amodule( variable6 /*ppackagedeclnode2*/,  variable4 /*listnode3*/,  variable5 /*listnode5*/); /*new AModule*/
   variable8 = variable9;
@@ -4170,7 +4183,7 @@ void parser___ReduceAction25___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction25___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction25___init, 1801};
+  struct trace_t trace = {NULL, LOCATE_parser, 1806, LOCATE_parser___ReduceAction25___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction25].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction25].i] = 1;
@@ -4178,7 +4191,7 @@ void parser___ReduceAction25___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction26___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction26___action, 1805};
+  struct trace_t trace = {NULL, LOCATE_parser, 1810, LOCATE_parser___ReduceAction26___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -4196,28 +4209,28 @@ void parser___ReduceAction26___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*listnode3*/==NIT_NULL) || VAL_ISA( variable6 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction26___action, 1813); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable6 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction26___action, LOCATE_parser, 1818); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode4*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable6 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode4*/,  variable6 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode4*/,  variable6 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable7 =  variable2 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*pclassdefnode5*/==NIT_NULL) || VAL_ISA( variable7 /*pclassdefnode5*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction26___action, 1822); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable7 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable7 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction26___action, LOCATE_parser, 1827); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable7 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable7 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable5 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*listnode6*/,  variable7 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable5 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*listnode6*/,  variable7 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable9 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable4 /*listnode4*/,  variable5 /*listnode6*/); /*new AModule*/
   variable8 = variable9;
@@ -4228,7 +4241,7 @@ void parser___ReduceAction26___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction26___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction26___init, 1834};
+  struct trace_t trace = {NULL, LOCATE_parser, 1839, LOCATE_parser___ReduceAction26___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction26].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction26].i] = 1;
@@ -4236,7 +4249,7 @@ void parser___ReduceAction26___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction27___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction27___action, 1838};
+  struct trace_t trace = {NULL, LOCATE_parser, 1843, LOCATE_parser___ReduceAction27___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -4258,31 +4271,31 @@ void parser___ReduceAction27___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable4 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable7 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction27___action, 1847); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction27___action, LOCATE_parser, 1852); nit_exit(1);}
   variable8 =  variable3 /*nodearraylist2*/;
   variable9 = TAG_Bool(( variable8 /*listnode3*/==NIT_NULL) || VAL_ISA( variable8 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction27___action, 1849); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction27___action, LOCATE_parser, 1854); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode4*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable5 =  variable8 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode4*/,  variable8 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode4*/,  variable8 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable9 =  variable2 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*pclassdefnode5*/==NIT_NULL) || VAL_ISA( variable9 /*pclassdefnode5*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction27___action, 1858); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction27___action, LOCATE_parser, 1863); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode6*/,  variable9 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode6*/,  variable9 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable11 = NEW_parser_prod___AModule___init_amodule( variable7 /*ppackagedeclnode2*/,  variable5 /*listnode4*/,  variable6 /*listnode6*/); /*new AModule*/
   variable10 = variable11;
@@ -4293,7 +4306,7 @@ void parser___ReduceAction27___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction27___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction27___init, 1870};
+  struct trace_t trace = {NULL, LOCATE_parser, 1875, LOCATE_parser___ReduceAction27___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction27].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction27].i] = 1;
@@ -4301,7 +4314,7 @@ void parser___ReduceAction27___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction28___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction28___action, 1874};
+  struct trace_t trace = {NULL, LOCATE_parser, 1879, LOCATE_parser___ReduceAction28___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -4319,28 +4332,28 @@ void parser___ReduceAction28___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*listnode4*/==NIT_NULL) || VAL_ISA( variable6 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction28___action, 1882); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction28___action, LOCATE_parser, 1887); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*pclassdefnode5*/==NIT_NULL) || VAL_ISA( variable7 /*pclassdefnode5*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction28___action, 1884); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction28___action, LOCATE_parser, 1889); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode6*/) /*Array::is_empty*/;
+    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable8)) { /*if*/
       variable5 =  variable6 /*listnode4*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode6*/,  variable6 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode6*/,  variable6 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable7 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable7 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable7 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable7 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable5 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*listnode6*/,  variable7 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable5 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*listnode6*/,  variable7 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable9 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable4 /*listnode3*/,  variable5 /*listnode6*/); /*new AModule*/
   variable8 = variable9;
@@ -4351,7 +4364,7 @@ void parser___ReduceAction28___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction28___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction28___init, 1903};
+  struct trace_t trace = {NULL, LOCATE_parser, 1908, LOCATE_parser___ReduceAction28___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction28].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction28].i] = 1;
@@ -4359,7 +4372,7 @@ void parser___ReduceAction28___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction29___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction29___action, 1907};
+  struct trace_t trace = {NULL, LOCATE_parser, 1912, LOCATE_parser___ReduceAction29___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -4381,31 +4394,31 @@ void parser___ReduceAction29___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable4 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable7 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction29___action, 1916); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction29___action, LOCATE_parser, 1921); nit_exit(1);}
   variable8 =  variable3 /*nodearraylist2*/;
   variable9 = TAG_Bool(( variable8 /*listnode4*/==NIT_NULL) || VAL_ISA( variable8 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction29___action, 1918); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction29___action, LOCATE_parser, 1923); nit_exit(1);}
   variable9 =  variable2 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*pclassdefnode5*/==NIT_NULL) || VAL_ISA( variable9 /*pclassdefnode5*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction29___action, 1920); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction29___action, LOCATE_parser, 1925); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode6*/) /*Array::is_empty*/;
+    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable10)) { /*if*/
       variable6 =  variable8 /*listnode4*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode6*/,  variable8 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode6*/,  variable8 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode6*/,  variable9 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode6*/,  variable9 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
   variable11 = NEW_parser_prod___AModule___init_amodule( variable7 /*ppackagedeclnode2*/,  variable5 /*listnode3*/,  variable6 /*listnode6*/); /*new AModule*/
   variable10 = variable11;
@@ -4416,7 +4429,7 @@ void parser___ReduceAction29___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction29___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction29___init, 1939};
+  struct trace_t trace = {NULL, LOCATE_parser, 1944, LOCATE_parser___ReduceAction29___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction29].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction29].i] = 1;
@@ -4424,7 +4437,7 @@ void parser___ReduceAction29___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction30___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction30___action, 1943};
+  struct trace_t trace = {NULL, LOCATE_parser, 1948, LOCATE_parser___ReduceAction30___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -4446,40 +4459,40 @@ void parser___ReduceAction30___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable4 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*listnode3*/==NIT_NULL) || VAL_ISA( variable7 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction30___action, 1952); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable7 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction30___action, LOCATE_parser, 1957); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode4*/) /*Array::is_empty*/;
+    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable8)) { /*if*/
       variable5 =  variable7 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode4*/,  variable7 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode4*/,  variable7 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable8 =  variable3 /*nodearraylist2*/;
   variable9 = TAG_Bool(( variable8 /*listnode5*/==NIT_NULL) || VAL_ISA( variable8 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction30___action, 1961); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction30___action, LOCATE_parser, 1966); nit_exit(1);}
   variable9 =  variable2 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*pclassdefnode6*/==NIT_NULL) || VAL_ISA( variable9 /*pclassdefnode6*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction30___action, 1963); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction30___action, LOCATE_parser, 1968); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode7*/) /*Array::is_empty*/;
+    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable10)) { /*if*/
       variable6 =  variable8 /*listnode5*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode7*/,  variable8 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode7*/,  variable8 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable9 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable9 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable9 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable9 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable6 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode7*/,  variable9 /*pclassdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable6 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode7*/,  variable9 /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
   variable11 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable5 /*listnode4*/,  variable6 /*listnode7*/); /*new AModule*/
   variable10 = variable11;
@@ -4490,7 +4503,7 @@ void parser___ReduceAction30___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction30___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction30___init, 1982};
+  struct trace_t trace = {NULL, LOCATE_parser, 1987, LOCATE_parser___ReduceAction30___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction30].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction30].i] = 1;
@@ -4498,7 +4511,7 @@ void parser___ReduceAction30___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction31___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction31___action, 1986};
+  struct trace_t trace = {NULL, LOCATE_parser, 1991, LOCATE_parser___ReduceAction31___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -4524,43 +4537,43 @@ void parser___ReduceAction31___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable5 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable8 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction31___action, 1996); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction31___action, LOCATE_parser, 2001); nit_exit(1);}
   variable9 =  variable4 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*listnode3*/==NIT_NULL) || VAL_ISA( variable9 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction31___action, 1998); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction31___action, LOCATE_parser, 2003); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode4*/) /*Array::is_empty*/;
+    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable10)) { /*if*/
       variable6 =  variable9 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode4*/,  variable9 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode4*/,  variable9 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable10 =  variable3 /*nodearraylist3*/;
   variable11 = TAG_Bool(( variable10 /*listnode5*/==NIT_NULL) || VAL_ISA( variable10 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction31___action, 2007); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction31___action, LOCATE_parser, 2012); nit_exit(1);}
   variable11 =  variable2 /*nodearraylist4*/;
   variable12 = TAG_Bool(( variable11 /*pclassdefnode6*/==NIT_NULL) || VAL_ISA( variable11 /*pclassdefnode6*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction31___action, 2009); nit_exit(1);}
-  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction31___action, LOCATE_parser, 2014); nit_exit(1);}
+  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable12)) { /*if*/
-    variable12 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode7*/) /*Array::is_empty*/;
+    variable12 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable12)) { /*if*/
       variable7 =  variable10 /*listnode5*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode7*/,  variable10 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode7*/,  variable10 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable11 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable11 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable11 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable11 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable12)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode7*/,  variable11 /*pclassdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode7*/,  variable11 /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
   variable13 = NEW_parser_prod___AModule___init_amodule( variable8 /*ppackagedeclnode2*/,  variable6 /*listnode4*/,  variable7 /*listnode7*/); /*new AModule*/
   variable12 = variable13;
@@ -4571,7 +4584,7 @@ void parser___ReduceAction31___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction31___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction31___init, 2028};
+  struct trace_t trace = {NULL, LOCATE_parser, 2033, LOCATE_parser___ReduceAction31___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction31].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction31].i] = 1;
@@ -4579,7 +4592,7 @@ void parser___ReduceAction31___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction32___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction32___action, 2032};
+  struct trace_t trace = {NULL, LOCATE_parser, 2037, LOCATE_parser___ReduceAction32___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -4602,31 +4615,31 @@ void parser___ReduceAction32___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable4 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable8 /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction32___action, 2042); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable8 /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable8 /*ppropdefnode5*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction32___action, LOCATE_parser, 2047); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable8 /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable8 /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode6*/,  variable8 /*ppropdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode6*/,  variable8 /*ppropdefnode5*/) /*AbstractArray::add*/;
   }
   variable10 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable7 /*listnode6*/); /*new ATopClassdef*/
   variable9 = variable10;
   variable10 =  variable2 /*nodearraylist3*/;
   variable11 = TAG_Bool(( variable10 /*pclassdefnode7*/==NIT_NULL) || VAL_ISA( variable10 /*pclassdefnode7*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction32___action, 2050); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable9 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable9 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction32___action, LOCATE_parser, 2055); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable9 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable9 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable6 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode8*/,  variable9 /*pclassdefnode4*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable6 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode8*/,  variable9 /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*pclassdefnode7*/ ==  NIT_NULL /*null*/) || (( variable10 /*pclassdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*pclassdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode7*/,COLOR_kernel___Object_____eqeq))( variable10 /*pclassdefnode7*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*pclassdefnode7*/ ==  NIT_NULL /*null*/) || (( variable10 /*pclassdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*pclassdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*pclassdefnode7*/,COLOR_kernel___Object_____eqeq))( variable10 /*pclassdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable6 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode8*/,  variable10 /*pclassdefnode7*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable6 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode8*/,  variable10 /*pclassdefnode7*/) /*AbstractArray::add*/;
   }
   variable12 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable5 /*listnode3*/,  variable6 /*listnode8*/); /*new AModule*/
   variable11 = variable12;
@@ -4637,7 +4650,7 @@ void parser___ReduceAction32___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction32___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction32___init, 2065};
+  struct trace_t trace = {NULL, LOCATE_parser, 2070, LOCATE_parser___ReduceAction32___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction32].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction32].i] = 1;
@@ -4645,7 +4658,7 @@ void parser___ReduceAction32___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction33___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction33___action, 2069};
+  struct trace_t trace = {NULL, LOCATE_parser, 2074, LOCATE_parser___ReduceAction33___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -4672,43 +4685,43 @@ void parser___ReduceAction33___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable5 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable9 /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction33___action, 2080); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction33___action, LOCATE_parser, 2085); nit_exit(1);}
   variable10 =  variable3 /*nodearraylist3*/;
   variable11 = TAG_Bool(( variable10 /*listnode6*/==NIT_NULL) || VAL_ISA( variable10 /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction33___action, 2082); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*ppropdefnode5*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction33___action, LOCATE_parser, 2087); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode7*/,  variable9 /*ppropdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode7*/,  variable9 /*ppropdefnode5*/) /*AbstractArray::add*/;
   }
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode6*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode6*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode7*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable8 =  variable10 /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode7*/,  variable10 /*listnode6*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode7*/,  variable10 /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable12 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable8 /*listnode7*/); /*new ATopClassdef*/
   variable11 = variable12;
   variable12 =  variable2 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable12 /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction33___action, 2097); nit_exit(1);}
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable11 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable11 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction33___action, LOCATE_parser, 2102); nit_exit(1);}
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable11 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable11 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable11 /*pclassdefnode4*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable11 /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode8*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable12 /*pclassdefnode8*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable12 /*pclassdefnode8*/) /*AbstractArray::add*/;
   }
   variable14 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable6 /*listnode3*/,  variable7 /*listnode9*/); /*new AModule*/
   variable13 = variable14;
@@ -4719,7 +4732,7 @@ void parser___ReduceAction33___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction33___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction33___init, 2112};
+  struct trace_t trace = {NULL, LOCATE_parser, 2117, LOCATE_parser___ReduceAction33___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction33].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction33].i] = 1;
@@ -4727,7 +4740,7 @@ void parser___ReduceAction33___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction34___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction34___action, 2116};
+  struct trace_t trace = {NULL, LOCATE_parser, 2121, LOCATE_parser___ReduceAction34___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -4754,34 +4767,34 @@ void parser___ReduceAction34___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable5 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable8 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction34___action, 2126); nit_exit(1);}
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction34___action, LOCATE_parser, 2131); nit_exit(1);}
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
   variable10 =  variable4 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable10 /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction34___action, 2129); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable10 /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable10 /*ppropdefnode5*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction34___action, LOCATE_parser, 2134); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable10 /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable10 /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode6*/,  variable10 /*ppropdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode6*/,  variable10 /*ppropdefnode5*/) /*AbstractArray::add*/;
   }
   variable12 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable9 /*listnode6*/); /*new ATopClassdef*/
   variable11 = variable12;
   variable12 =  variable2 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*pclassdefnode7*/==NIT_NULL) || VAL_ISA( variable12 /*pclassdefnode7*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction34___action, 2137); nit_exit(1);}
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable11 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable11 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction34___action, LOCATE_parser, 2142); nit_exit(1);}
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable11 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable11 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode8*/,  variable11 /*pclassdefnode4*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode8*/,  variable11 /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode7*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode7*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode7*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode7*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode7*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode8*/,  variable12 /*pclassdefnode7*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode8*/,  variable12 /*pclassdefnode7*/) /*AbstractArray::add*/;
   }
   variable14 = NEW_parser_prod___AModule___init_amodule( variable8 /*ppackagedeclnode2*/,  variable6 /*listnode3*/,  variable7 /*listnode8*/); /*new AModule*/
   variable13 = variable14;
@@ -4792,7 +4805,7 @@ void parser___ReduceAction34___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction34___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction34___init, 2152};
+  struct trace_t trace = {NULL, LOCATE_parser, 2157, LOCATE_parser___ReduceAction34___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction34].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction34].i] = 1;
@@ -4800,7 +4813,7 @@ void parser___ReduceAction34___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction35___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction35___action, 2156};
+  struct trace_t trace = {NULL, LOCATE_parser, 2161, LOCATE_parser___ReduceAction35___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -4831,46 +4844,46 @@ void parser___ReduceAction35___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable6 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable9 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction35___action, 2167); nit_exit(1);}
-  variable11 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction35___action, LOCATE_parser, 2172); nit_exit(1);}
+  variable11 = NEW_array___Array___init(); /*new Array[E]*/
   variable10 = variable11;
   variable11 =  variable5 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*ppropdefnode5*/==NIT_NULL) || VAL_ISA( variable11 /*ppropdefnode5*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction35___action, 2170); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction35___action, LOCATE_parser, 2175); nit_exit(1);}
   variable12 =  variable3 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*listnode6*/==NIT_NULL) || VAL_ISA( variable12 /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction35___action, 2172); nit_exit(1);}
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable11 /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable11 /*ppropdefnode5*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction35___action, LOCATE_parser, 2177); nit_exit(1);}
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*ppropdefnode5*/ ==  NIT_NULL /*null*/) || (( variable11 /*ppropdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*ppropdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode5*/,COLOR_kernel___Object_____eqeq))( variable11 /*ppropdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable10 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable10 /*listnode7*/,  variable11 /*ppropdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable10 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable10 /*listnode7*/,  variable11 /*ppropdefnode5*/) /*AbstractArray::add*/;
   }
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable12 /*listnode6*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable12 /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable12 /*listnode6*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable12 /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable12 /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable10 /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable10 /*listnode7*/) /*Array::is_empty*/;
+    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable10 /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable10 /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable13)) { /*if*/
       variable10 =  variable12 /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable10 /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable10 /*listnode7*/,  variable12 /*listnode6*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable10 /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable10 /*listnode7*/,  variable12 /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable14 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable10 /*listnode7*/); /*new ATopClassdef*/
   variable13 = variable14;
   variable14 =  variable2 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable14 /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction35___action, 2187); nit_exit(1);}
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable13 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable13 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction35___action, LOCATE_parser, 2192); nit_exit(1);}
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*pclassdefnode4*/ ==  NIT_NULL /*null*/) || (( variable13 /*pclassdefnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*pclassdefnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode4*/,COLOR_kernel___Object_____eqeq))( variable13 /*pclassdefnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable13 /*pclassdefnode4*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable13 /*pclassdefnode4*/) /*AbstractArray::add*/;
   }
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode8*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable14 /*pclassdefnode8*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable14 /*pclassdefnode8*/) /*AbstractArray::add*/;
   }
   variable16 = NEW_parser_prod___AModule___init_amodule( variable9 /*ppackagedeclnode2*/,  variable7 /*listnode3*/,  variable8 /*listnode9*/); /*new AModule*/
   variable15 = variable16;
@@ -4881,7 +4894,7 @@ void parser___ReduceAction35___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction35___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction35___init, 2202};
+  struct trace_t trace = {NULL, LOCATE_parser, 2207, LOCATE_parser___ReduceAction35___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction35].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction35].i] = 1;
@@ -4889,7 +4902,7 @@ void parser___ReduceAction35___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction36___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction36___action, 2206};
+  struct trace_t trace = {NULL, LOCATE_parser, 2211, LOCATE_parser___ReduceAction36___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -4916,43 +4929,43 @@ void parser___ReduceAction36___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable5 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*listnode3*/==NIT_NULL) || VAL_ISA( variable8 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction36___action, 2216); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction36___action, LOCATE_parser, 2221); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode4*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable6 =  variable8 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode4*/,  variable8 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode4*/,  variable8 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
   variable10 =  variable4 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable10 /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction36___action, 2226); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable10 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable10 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction36___action, LOCATE_parser, 2231); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable10 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable10 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable9 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode7*/,  variable10 /*ppropdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable9 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode7*/,  variable10 /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
   variable12 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable9 /*listnode7*/); /*new ATopClassdef*/
   variable11 = variable12;
   variable12 =  variable2 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable12 /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction36___action, 2234); nit_exit(1);}
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable11 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable11 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction36___action, LOCATE_parser, 2239); nit_exit(1);}
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable11 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable11 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable11 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable11 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode8*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable12 /*pclassdefnode8*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable12 /*pclassdefnode8*/) /*AbstractArray::add*/;
   }
   variable14 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable6 /*listnode4*/,  variable7 /*listnode9*/); /*new AModule*/
   variable13 = variable14;
@@ -4963,7 +4976,7 @@ void parser___ReduceAction36___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction36___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction36___init, 2249};
+  struct trace_t trace = {NULL, LOCATE_parser, 2254, LOCATE_parser___ReduceAction36___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction36].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction36].i] = 1;
@@ -4971,7 +4984,7 @@ void parser___ReduceAction36___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction37___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction37___action, 2253};
+  struct trace_t trace = {NULL, LOCATE_parser, 2258, LOCATE_parser___ReduceAction37___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -5002,55 +5015,55 @@ void parser___ReduceAction37___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable6 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*listnode3*/==NIT_NULL) || VAL_ISA( variable9 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction37___action, 2264); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction37___action, LOCATE_parser, 2269); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode4*/) /*Array::is_empty*/;
+    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable10)) { /*if*/
       variable7 =  variable9 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode4*/,  variable9 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode4*/,  variable9 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
-  variable11 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable11 = NEW_array___Array___init(); /*new Array[E]*/
   variable10 = variable11;
   variable11 =  variable5 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable11 /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction37___action, 2274); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction37___action, LOCATE_parser, 2279); nit_exit(1);}
   variable12 =  variable3 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*listnode7*/==NIT_NULL) || VAL_ISA( variable12 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction37___action, 2276); nit_exit(1);}
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable11 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable11 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction37___action, LOCATE_parser, 2281); nit_exit(1);}
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable11 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable11 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable10 /*listnode8*/,  variable11 /*ppropdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable10 /*listnode8*/,  variable11 /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable12 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable12 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable12 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable12 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable12 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable10 /*listnode8*/) /*Array::is_empty*/;
+    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable10 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable13)) { /*if*/
       variable10 =  variable12 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable10 /*listnode8*/,  variable12 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable10 /*listnode8*/,  variable12 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable14 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable10 /*listnode8*/); /*new ATopClassdef*/
   variable13 = variable14;
   variable14 =  variable2 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable14 /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction37___action, 2291); nit_exit(1);}
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction37___action, LOCATE_parser, 2296); nit_exit(1);}
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode10*/,  variable13 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode10*/,  variable13 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode9*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode10*/,  variable14 /*pclassdefnode9*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode10*/,  variable14 /*pclassdefnode9*/) /*AbstractArray::add*/;
   }
   variable16 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable7 /*listnode4*/,  variable8 /*listnode10*/); /*new AModule*/
   variable15 = variable16;
@@ -5061,7 +5074,7 @@ void parser___ReduceAction37___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction37___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction37___init, 2306};
+  struct trace_t trace = {NULL, LOCATE_parser, 2311, LOCATE_parser___ReduceAction37___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction37].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction37].i] = 1;
@@ -5069,7 +5082,7 @@ void parser___ReduceAction37___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction38___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction38___action, 2310};
+  struct trace_t trace = {NULL, LOCATE_parser, 2315, LOCATE_parser___ReduceAction38___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -5100,46 +5113,46 @@ void parser___ReduceAction38___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable6 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable9 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction38___action, 2321); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction38___action, LOCATE_parser, 2326); nit_exit(1);}
   variable10 =  variable5 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*listnode3*/==NIT_NULL) || VAL_ISA( variable10 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction38___action, 2323); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction38___action, LOCATE_parser, 2328); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode4*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable7 =  variable10 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode4*/,  variable10 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode4*/,  variable10 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
-  variable12 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable12 = NEW_array___Array___init(); /*new Array[E]*/
   variable11 = variable12;
   variable12 =  variable4 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable12 /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction38___action, 2333); nit_exit(1);}
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable12 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable12 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction38___action, LOCATE_parser, 2338); nit_exit(1);}
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable12 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable12 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable11 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable11 /*listnode7*/,  variable12 /*ppropdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable11 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable11 /*listnode7*/,  variable12 /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
   variable14 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable11 /*listnode7*/); /*new ATopClassdef*/
   variable13 = variable14;
   variable14 =  variable2 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable14 /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction38___action, 2341); nit_exit(1);}
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction38___action, LOCATE_parser, 2346); nit_exit(1);}
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable13 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable13 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode8*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable14 /*pclassdefnode8*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable14 /*pclassdefnode8*/) /*AbstractArray::add*/;
   }
   variable16 = NEW_parser_prod___AModule___init_amodule( variable9 /*ppackagedeclnode2*/,  variable7 /*listnode4*/,  variable8 /*listnode9*/); /*new AModule*/
   variable15 = variable16;
@@ -5150,7 +5163,7 @@ void parser___ReduceAction38___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction38___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction38___init, 2356};
+  struct trace_t trace = {NULL, LOCATE_parser, 2361, LOCATE_parser___ReduceAction38___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction38].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction38].i] = 1;
@@ -5158,7 +5171,7 @@ void parser___ReduceAction38___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction39___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction39___action, 2360};
+  struct trace_t trace = {NULL, LOCATE_parser, 2365, LOCATE_parser___ReduceAction39___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -5193,58 +5206,58 @@ void parser___ReduceAction39___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable8 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
   variable10 =  variable7 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable10 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction39___action, 2372); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction39___action, LOCATE_parser, 2377); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*listnode3*/==NIT_NULL) || VAL_ISA( variable11 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction39___action, 2374); nit_exit(1);}
-  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable11 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction39___action, LOCATE_parser, 2379); nit_exit(1);}
+  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable12)) { /*if*/
-    variable12 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode4*/) /*Array::is_empty*/;
+    variable12 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable12)) { /*if*/
       variable8 =  variable11 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode4*/,  variable11 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode4*/,  variable11 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
-  variable13 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable13 = NEW_array___Array___init(); /*new Array[E]*/
   variable12 = variable13;
   variable13 =  variable5 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable13 /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction39___action, 2384); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction39___action, LOCATE_parser, 2389); nit_exit(1);}
   variable14 =  variable3 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*listnode7*/==NIT_NULL) || VAL_ISA( variable14 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction39___action, 2386); nit_exit(1);}
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable13 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable13 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction39___action, LOCATE_parser, 2391); nit_exit(1);}
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable13 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable13 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable12 /*listnode8*/,  variable13 /*ppropdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable12 /*listnode8*/,  variable13 /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable14 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable14 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable14 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable14 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable14 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable12 /*listnode8*/) /*Array::is_empty*/;
+    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable12 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable15)) { /*if*/
       variable12 =  variable14 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable12 /*listnode8*/,  variable14 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable12 /*listnode8*/,  variable14 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable16 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable12 /*listnode8*/); /*new ATopClassdef*/
   variable15 = variable16;
   variable16 =  variable2 /*nodearraylist6*/;
   variable17 = TAG_Bool(( variable16 /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable16 /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction39___action, 2401); nit_exit(1);}
-  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable15 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable15 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable15 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable15 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable15 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable15 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction39___action, LOCATE_parser, 2406); nit_exit(1);}
+  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable15 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable15 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable15 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable15 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable15 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable15 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable17)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode10*/,  variable15 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode10*/,  variable15 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
-  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable16 /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable16 /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable16 /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable16 /*pclassdefnode9*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable16 /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable16 /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable16 /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable16 /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable17)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode10*/,  variable16 /*pclassdefnode9*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode10*/,  variable16 /*pclassdefnode9*/) /*AbstractArray::add*/;
   }
   variable18 = NEW_parser_prod___AModule___init_amodule( variable10 /*ppackagedeclnode2*/,  variable8 /*listnode4*/,  variable9 /*listnode10*/); /*new AModule*/
   variable17 = variable18;
@@ -5255,7 +5268,7 @@ void parser___ReduceAction39___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction39___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction39___init, 2416};
+  struct trace_t trace = {NULL, LOCATE_parser, 2421, LOCATE_parser___ReduceAction39___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction39].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction39].i] = 1;
@@ -5263,7 +5276,7 @@ void parser___ReduceAction39___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction40___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction40___action, 2420};
+  struct trace_t trace = {NULL, LOCATE_parser, 2425, LOCATE_parser___ReduceAction40___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -5290,43 +5303,43 @@ void parser___ReduceAction40___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable5 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*listnode4*/==NIT_NULL) || VAL_ISA( variable8 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction40___action, 2430); nit_exit(1);}
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction40___action, LOCATE_parser, 2435); nit_exit(1);}
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
   variable10 =  variable4 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable10 /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction40___action, 2433); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable10 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable10 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction40___action, LOCATE_parser, 2438); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable10 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable10 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable9 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode7*/,  variable10 /*ppropdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable9 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode7*/,  variable10 /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
   variable12 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable9 /*listnode7*/); /*new ATopClassdef*/
   variable11 = variable12;
   variable12 =  variable2 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable12 /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction40___action, 2441); nit_exit(1);}
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction40___action, LOCATE_parser, 2446); nit_exit(1);}
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode9*/) /*Array::is_empty*/;
+    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable13)) { /*if*/
       variable7 =  variable8 /*listnode4*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode9*/,  variable8 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode9*/,  variable8 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable11 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable11 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable11 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable11 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable11 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable11 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode8*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable12 /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable12 /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable12 /*pclassdefnode8*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode9*/,  variable12 /*pclassdefnode8*/) /*AbstractArray::add*/;
   }
   variable14 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable6 /*listnode3*/,  variable7 /*listnode9*/); /*new AModule*/
   variable13 = variable14;
@@ -5337,7 +5350,7 @@ void parser___ReduceAction40___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction40___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction40___init, 2463};
+  struct trace_t trace = {NULL, LOCATE_parser, 2468, LOCATE_parser___ReduceAction40___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction40].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction40].i] = 1;
@@ -5345,7 +5358,7 @@ void parser___ReduceAction40___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction41___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction41___action, 2467};
+  struct trace_t trace = {NULL, LOCATE_parser, 2472, LOCATE_parser___ReduceAction41___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -5376,55 +5389,55 @@ void parser___ReduceAction41___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable6 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*listnode4*/==NIT_NULL) || VAL_ISA( variable9 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction41___action, 2478); nit_exit(1);}
-  variable11 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction41___action, LOCATE_parser, 2483); nit_exit(1);}
+  variable11 = NEW_array___Array___init(); /*new Array[E]*/
   variable10 = variable11;
   variable11 =  variable5 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable11 /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction41___action, 2481); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction41___action, LOCATE_parser, 2486); nit_exit(1);}
   variable12 =  variable3 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*listnode7*/==NIT_NULL) || VAL_ISA( variable12 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction41___action, 2483); nit_exit(1);}
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable11 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable11 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction41___action, LOCATE_parser, 2488); nit_exit(1);}
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable11 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable11 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable10 /*listnode8*/,  variable11 /*ppropdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable10 /*listnode8*/,  variable11 /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable12 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable12 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable12 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable12 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable12 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable10 /*listnode8*/) /*Array::is_empty*/;
+    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable10 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable13)) { /*if*/
       variable10 =  variable12 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable10 /*listnode8*/,  variable12 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable10 /*listnode8*/,  variable12 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable14 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable10 /*listnode8*/); /*new ATopClassdef*/
   variable13 = variable14;
   variable14 =  variable2 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable14 /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction41___action, 2498); nit_exit(1);}
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction41___action, LOCATE_parser, 2503); nit_exit(1);}
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode10*/) /*Array::is_empty*/;
+    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable15)) { /*if*/
       variable8 =  variable9 /*listnode4*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode10*/,  variable9 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode10*/,  variable9 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode10*/,  variable13 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode10*/,  variable13 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode9*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode10*/,  variable14 /*pclassdefnode9*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode10*/,  variable14 /*pclassdefnode9*/) /*AbstractArray::add*/;
   }
   variable16 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable7 /*listnode3*/,  variable8 /*listnode10*/); /*new AModule*/
   variable15 = variable16;
@@ -5435,7 +5448,7 @@ void parser___ReduceAction41___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction41___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction41___init, 2520};
+  struct trace_t trace = {NULL, LOCATE_parser, 2525, LOCATE_parser___ReduceAction41___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction41].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction41].i] = 1;
@@ -5443,7 +5456,7 @@ void parser___ReduceAction41___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction42___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction42___action, 2524};
+  struct trace_t trace = {NULL, LOCATE_parser, 2529, LOCATE_parser___ReduceAction42___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -5474,46 +5487,46 @@ void parser___ReduceAction42___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable6 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable9 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction42___action, 2535); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction42___action, LOCATE_parser, 2540); nit_exit(1);}
   variable10 =  variable5 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*listnode4*/==NIT_NULL) || VAL_ISA( variable10 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction42___action, 2537); nit_exit(1);}
-  variable12 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction42___action, LOCATE_parser, 2542); nit_exit(1);}
+  variable12 = NEW_array___Array___init(); /*new Array[E]*/
   variable11 = variable12;
   variable12 =  variable4 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable12 /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction42___action, 2540); nit_exit(1);}
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable12 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable12 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction42___action, LOCATE_parser, 2545); nit_exit(1);}
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable12 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable12 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable11 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable11 /*listnode7*/,  variable12 /*ppropdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable11 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable11 /*listnode7*/,  variable12 /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
   variable14 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable11 /*listnode7*/); /*new ATopClassdef*/
   variable13 = variable14;
   variable14 =  variable2 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*pclassdefnode8*/==NIT_NULL) || VAL_ISA( variable14 /*pclassdefnode8*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction42___action, 2548); nit_exit(1);}
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction42___action, LOCATE_parser, 2553); nit_exit(1);}
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode9*/) /*Array::is_empty*/;
+    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable15)) { /*if*/
       variable8 =  variable10 /*listnode4*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode9*/,  variable10 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode9*/,  variable10 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable13 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable13 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode8*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode8*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode8*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable14 /*pclassdefnode8*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode9*/,  variable14 /*pclassdefnode8*/) /*AbstractArray::add*/;
   }
   variable16 = NEW_parser_prod___AModule___init_amodule( variable9 /*ppackagedeclnode2*/,  variable7 /*listnode3*/,  variable8 /*listnode9*/); /*new AModule*/
   variable15 = variable16;
@@ -5524,7 +5537,7 @@ void parser___ReduceAction42___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction42___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction42___init, 2570};
+  struct trace_t trace = {NULL, LOCATE_parser, 2575, LOCATE_parser___ReduceAction42___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction42].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction42].i] = 1;
@@ -5532,7 +5545,7 @@ void parser___ReduceAction42___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction43___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction43___action, 2574};
+  struct trace_t trace = {NULL, LOCATE_parser, 2579, LOCATE_parser___ReduceAction43___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -5567,58 +5580,58 @@ void parser___ReduceAction43___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable8 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
   variable10 =  variable7 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable10 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction43___action, 2586); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction43___action, LOCATE_parser, 2591); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*listnode4*/==NIT_NULL) || VAL_ISA( variable11 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction43___action, 2588); nit_exit(1);}
-  variable13 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction43___action, LOCATE_parser, 2593); nit_exit(1);}
+  variable13 = NEW_array___Array___init(); /*new Array[E]*/
   variable12 = variable13;
   variable13 =  variable5 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*ppropdefnode6*/==NIT_NULL) || VAL_ISA( variable13 /*ppropdefnode6*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction43___action, 2591); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction43___action, LOCATE_parser, 2596); nit_exit(1);}
   variable14 =  variable3 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*listnode7*/==NIT_NULL) || VAL_ISA( variable14 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction43___action, 2593); nit_exit(1);}
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable13 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable13 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction43___action, LOCATE_parser, 2598); nit_exit(1);}
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*ppropdefnode6*/ ==  NIT_NULL /*null*/) || (( variable13 /*ppropdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*ppropdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*ppropdefnode6*/,COLOR_kernel___Object_____eqeq))( variable13 /*ppropdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable12 /*listnode8*/,  variable13 /*ppropdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable12 /*listnode8*/,  variable13 /*ppropdefnode6*/) /*AbstractArray::add*/;
   }
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable14 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable14 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable14 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable14 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable14 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable12 /*listnode8*/) /*Array::is_empty*/;
+    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable12 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable15)) { /*if*/
       variable12 =  variable14 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable12 /*listnode8*/,  variable14 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable12 /*listnode8*/,  variable14 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable16 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable12 /*listnode8*/); /*new ATopClassdef*/
   variable15 = variable16;
   variable16 =  variable2 /*nodearraylist6*/;
   variable17 = TAG_Bool(( variable16 /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable16 /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction43___action, 2608); nit_exit(1);}
-  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable11 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction43___action, LOCATE_parser, 2613); nit_exit(1);}
+  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable17)) { /*if*/
-    variable17 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode10*/) /*Array::is_empty*/;
+    variable17 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable17)) { /*if*/
       variable9 =  variable11 /*listnode4*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode10*/,  variable11 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode10*/,  variable11 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
-  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable15 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable15 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable15 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable15 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable15 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable15 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable15 /*pclassdefnode5*/ ==  NIT_NULL /*null*/) || (( variable15 /*pclassdefnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable15 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable15 /*pclassdefnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable15 /*pclassdefnode5*/,COLOR_kernel___Object_____eqeq))( variable15 /*pclassdefnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable17)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode10*/,  variable15 /*pclassdefnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode10*/,  variable15 /*pclassdefnode5*/) /*AbstractArray::add*/;
   }
-  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable16 /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable16 /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable16 /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable16 /*pclassdefnode9*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable16 /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable16 /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable16 /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable16 /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable17)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode10*/,  variable16 /*pclassdefnode9*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode10*/,  variable16 /*pclassdefnode9*/) /*AbstractArray::add*/;
   }
   variable18 = NEW_parser_prod___AModule___init_amodule( variable10 /*ppackagedeclnode2*/,  variable8 /*listnode3*/,  variable9 /*listnode10*/); /*new AModule*/
   variable17 = variable18;
@@ -5629,7 +5642,7 @@ void parser___ReduceAction43___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction43___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction43___init, 2630};
+  struct trace_t trace = {NULL, LOCATE_parser, 2635, LOCATE_parser___ReduceAction43___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction43].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction43].i] = 1;
@@ -5637,7 +5650,7 @@ void parser___ReduceAction43___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction44___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction44___action, 2634};
+  struct trace_t trace = {NULL, LOCATE_parser, 2639, LOCATE_parser___ReduceAction44___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -5668,55 +5681,55 @@ void parser___ReduceAction44___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable6 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*listnode3*/==NIT_NULL) || VAL_ISA( variable9 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction44___action, 2645); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction44___action, LOCATE_parser, 2650); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode4*/) /*Array::is_empty*/;
+    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable10)) { /*if*/
       variable7 =  variable9 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode4*/,  variable9 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode4*/,  variable9 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable10 =  variable5 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*listnode5*/==NIT_NULL) || VAL_ISA( variable10 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction44___action, 2654); nit_exit(1);}
-  variable12 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction44___action, LOCATE_parser, 2659); nit_exit(1);}
+  variable12 = NEW_array___Array___init(); /*new Array[E]*/
   variable11 = variable12;
   variable12 =  variable4 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable12 /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction44___action, 2657); nit_exit(1);}
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable12 /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable12 /*ppropdefnode7*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction44___action, LOCATE_parser, 2662); nit_exit(1);}
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable12 /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable12 /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable11 /*listnode8*/,  variable12 /*ppropdefnode7*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable11 /*listnode8*/,  variable12 /*ppropdefnode7*/) /*AbstractArray::add*/;
   }
   variable14 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable11 /*listnode8*/); /*new ATopClassdef*/
   variable13 = variable14;
   variable14 =  variable2 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable14 /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction44___action, 2665); nit_exit(1);}
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction44___action, LOCATE_parser, 2670); nit_exit(1);}
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode10*/) /*Array::is_empty*/;
+    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable15)) { /*if*/
       variable8 =  variable10 /*listnode5*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode10*/,  variable10 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode10*/,  variable10 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable13 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable13 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable13 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable13 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode10*/,  variable13 /*pclassdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode10*/,  variable13 /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode9*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable14 /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable14 /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode10*/,  variable14 /*pclassdefnode9*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode10*/,  variable14 /*pclassdefnode9*/) /*AbstractArray::add*/;
   }
   variable16 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable7 /*listnode4*/,  variable8 /*listnode10*/); /*new AModule*/
   variable15 = variable16;
@@ -5727,7 +5740,7 @@ void parser___ReduceAction44___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction44___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction44___init, 2687};
+  struct trace_t trace = {NULL, LOCATE_parser, 2692, LOCATE_parser___ReduceAction44___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction44].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction44].i] = 1;
@@ -5735,7 +5748,7 @@ void parser___ReduceAction44___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction45___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction45___action, 2691};
+  struct trace_t trace = {NULL, LOCATE_parser, 2696, LOCATE_parser___ReduceAction45___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -5770,67 +5783,67 @@ void parser___ReduceAction45___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable8 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
   variable10 =  variable7 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*listnode3*/==NIT_NULL) || VAL_ISA( variable10 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction45___action, 2703); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction45___action, LOCATE_parser, 2708); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode4*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable8 =  variable10 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode4*/,  variable10 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode4*/,  variable10 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable11 =  variable6 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*listnode5*/==NIT_NULL) || VAL_ISA( variable11 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction45___action, 2712); nit_exit(1);}
-  variable13 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction45___action, LOCATE_parser, 2717); nit_exit(1);}
+  variable13 = NEW_array___Array___init(); /*new Array[E]*/
   variable12 = variable13;
   variable13 =  variable5 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable13 /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction45___action, 2715); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction45___action, LOCATE_parser, 2720); nit_exit(1);}
   variable14 =  variable3 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*listnode8*/==NIT_NULL) || VAL_ISA( variable14 /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction45___action, 2717); nit_exit(1);}
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable13 /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable13 /*ppropdefnode7*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction45___action, LOCATE_parser, 2722); nit_exit(1);}
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable13 /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable13 /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable12 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable12 /*listnode9*/,  variable13 /*ppropdefnode7*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable12 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable12 /*listnode9*/,  variable13 /*ppropdefnode7*/) /*AbstractArray::add*/;
   }
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable14 /*listnode8*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable14 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable14 /*listnode8*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable14 /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable14 /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable12 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable12 /*listnode9*/) /*Array::is_empty*/;
+    variable15 = ((array___AbstractArray___is_empty_t)CALL( variable12 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable12 /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable15)) { /*if*/
       variable12 =  variable14 /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable12 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable12 /*listnode9*/,  variable14 /*listnode8*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable12 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable12 /*listnode9*/,  variable14 /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable16 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable12 /*listnode9*/); /*new ATopClassdef*/
   variable15 = variable16;
   variable16 =  variable2 /*nodearraylist6*/;
   variable17 = TAG_Bool(( variable16 /*pclassdefnode10*/==NIT_NULL) || VAL_ISA( variable16 /*pclassdefnode10*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction45___action, 2732); nit_exit(1);}
-  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable11 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction45___action, LOCATE_parser, 2737); nit_exit(1);}
+  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable17)) { /*if*/
-    variable17 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode11*/) /*Array::is_empty*/;
+    variable17 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode11*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable17)) { /*if*/
       variable9 =  variable11 /*listnode5*/ /*listnode11=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode11*/,  variable11 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode11*/,  variable11 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable15 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable15 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable15 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable15 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable15 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable15 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable15 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable15 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable15 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable15 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable15 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable15 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable17)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable9 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode11*/,  variable15 /*pclassdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable9 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode11*/,  variable15 /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
-  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable16 /*pclassdefnode10*/ ==  NIT_NULL /*null*/) || (( variable16 /*pclassdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable16 /*pclassdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode10*/,COLOR_kernel___Object_____eqeq))( variable16 /*pclassdefnode10*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable16 /*pclassdefnode10*/ ==  NIT_NULL /*null*/) || (( variable16 /*pclassdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable16 /*pclassdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode10*/,COLOR_kernel___Object_____eqeq))( variable16 /*pclassdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable17)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable9 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode11*/,  variable16 /*pclassdefnode10*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable9 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode11*/,  variable16 /*pclassdefnode10*/) /*AbstractArray::add*/;
   }
   variable18 = NEW_parser_prod___AModule___init_amodule( NIT_NULL /*null*/,  variable8 /*listnode4*/,  variable9 /*listnode11*/); /*new AModule*/
   variable17 = variable18;
@@ -5841,7 +5854,7 @@ void parser___ReduceAction45___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction45___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction45___init, 2754};
+  struct trace_t trace = {NULL, LOCATE_parser, 2759, LOCATE_parser___ReduceAction45___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction45].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction45].i] = 1;
@@ -5849,7 +5862,7 @@ void parser___ReduceAction45___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction46___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction46___action, 2758};
+  struct trace_t trace = {NULL, LOCATE_parser, 2763, LOCATE_parser___ReduceAction46___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -5884,58 +5897,58 @@ void parser___ReduceAction46___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable8 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
   variable10 =  variable7 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable10 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction46___action, 2770); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction46___action, LOCATE_parser, 2775); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*listnode3*/==NIT_NULL) || VAL_ISA( variable11 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction46___action, 2772); nit_exit(1);}
-  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable11 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction46___action, LOCATE_parser, 2777); nit_exit(1);}
+  variable12 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable11 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable11 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable11 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable11 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable11 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable11 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable12)) { /*if*/
-    variable12 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode4*/) /*Array::is_empty*/;
+    variable12 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable12)) { /*if*/
       variable8 =  variable11 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode4*/,  variable11 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode4*/,  variable11 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable12 =  variable5 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*listnode5*/==NIT_NULL) || VAL_ISA( variable12 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction46___action, 2781); nit_exit(1);}
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction46___action, LOCATE_parser, 2786); nit_exit(1);}
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
   variable14 =  variable4 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable14 /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction46___action, 2784); nit_exit(1);}
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable14 /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable14 /*ppropdefnode7*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction46___action, LOCATE_parser, 2789); nit_exit(1);}
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable14 /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable14 /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable13 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable13 /*listnode8*/,  variable14 /*ppropdefnode7*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable13 /*listnode8*/,COLOR_abstract_collection___SimpleCollection___add))( variable13 /*listnode8*/,  variable14 /*ppropdefnode7*/) /*AbstractArray::add*/;
   }
   variable16 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable13 /*listnode8*/); /*new ATopClassdef*/
   variable15 = variable16;
   variable16 =  variable2 /*nodearraylist6*/;
   variable17 = TAG_Bool(( variable16 /*pclassdefnode9*/==NIT_NULL) || VAL_ISA( variable16 /*pclassdefnode9*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction46___action, 2792); nit_exit(1);}
-  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable12 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable12 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable12 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction46___action, LOCATE_parser, 2797); nit_exit(1);}
+  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable12 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable12 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable17)) { /*if*/
-    variable17 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode10*/) /*Array::is_empty*/;
+    variable17 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable17)) { /*if*/
       variable9 =  variable12 /*listnode5*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode10*/,  variable12 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode10*/,  variable12 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable15 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable15 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable15 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable15 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable15 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable15 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable15 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable15 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable15 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable15 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable15 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable15 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable17)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode10*/,  variable15 /*pclassdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode10*/,  variable15 /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
-  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable16 /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable16 /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable16 /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable16 /*pclassdefnode9*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable16 /*pclassdefnode9*/ ==  NIT_NULL /*null*/) || (( variable16 /*pclassdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable16 /*pclassdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable16 /*pclassdefnode9*/,COLOR_kernel___Object_____eqeq))( variable16 /*pclassdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable17)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode10*/,  variable16 /*pclassdefnode9*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable9 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable9 /*listnode10*/,  variable16 /*pclassdefnode9*/) /*AbstractArray::add*/;
   }
   variable18 = NEW_parser_prod___AModule___init_amodule( variable10 /*ppackagedeclnode2*/,  variable8 /*listnode4*/,  variable9 /*listnode10*/); /*new AModule*/
   variable17 = variable18;
@@ -5946,7 +5959,7 @@ void parser___ReduceAction46___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction46___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction46___init, 2814};
+  struct trace_t trace = {NULL, LOCATE_parser, 2819, LOCATE_parser___ReduceAction46___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction46].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction46].i] = 1;
@@ -5954,7 +5967,7 @@ void parser___ReduceAction46___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction47___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction47___action, 2818};
+  struct trace_t trace = {NULL, LOCATE_parser, 2823, LOCATE_parser___ReduceAction47___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -5993,70 +6006,70 @@ void parser___ReduceAction47___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable9 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable8 = variable9;
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
-  variable11 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable11 = NEW_array___Array___init(); /*new Array[E]*/
   variable10 = variable11;
   variable11 =  variable8 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*ppackagedeclnode2*/==NIT_NULL) || VAL_ISA( variable11 /*ppackagedeclnode2*/, COLOR_PPackagedecl, ID_PPackagedecl)) /*cast PPackagedecl*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction47___action, 2831); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction47___action, LOCATE_parser, 2836); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*listnode3*/==NIT_NULL) || VAL_ISA( variable12 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction47___action, 2833); nit_exit(1);}
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable12 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable12 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable12 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction47___action, LOCATE_parser, 2838); nit_exit(1);}
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable12 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable12 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode4*/) /*Array::is_empty*/;
+    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable13)) { /*if*/
       variable9 =  variable12 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode4*/,  variable12 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode4*/,  variable12 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable13 =  variable6 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*listnode5*/==NIT_NULL) || VAL_ISA( variable13 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction47___action, 2842); nit_exit(1);}
-  variable15 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction47___action, LOCATE_parser, 2847); nit_exit(1);}
+  variable15 = NEW_array___Array___init(); /*new Array[E]*/
   variable14 = variable15;
   variable15 =  variable5 /*nodearraylist4*/;
   variable16 = TAG_Bool(( variable15 /*ppropdefnode7*/==NIT_NULL) || VAL_ISA( variable15 /*ppropdefnode7*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction47___action, 2845); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction47___action, LOCATE_parser, 2850); nit_exit(1);}
   variable16 =  variable3 /*nodearraylist6*/;
   variable17 = TAG_Bool(( variable16 /*listnode8*/==NIT_NULL) || VAL_ISA( variable16 /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction47___action, 2847); nit_exit(1);}
-  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable15 /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable15 /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable15 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable15 /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable15 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable15 /*ppropdefnode7*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction47___action, LOCATE_parser, 2852); nit_exit(1);}
+  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable15 /*ppropdefnode7*/ ==  NIT_NULL /*null*/) || (( variable15 /*ppropdefnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable15 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable15 /*ppropdefnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable15 /*ppropdefnode7*/,COLOR_kernel___Object_____eqeq))( variable15 /*ppropdefnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable17)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable14 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable14 /*listnode9*/,  variable15 /*ppropdefnode7*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable14 /*listnode9*/,COLOR_abstract_collection___SimpleCollection___add))( variable14 /*listnode9*/,  variable15 /*ppropdefnode7*/) /*AbstractArray::add*/;
   }
-  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable16 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable16 /*listnode8*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable16 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable16 /*listnode8*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable16 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable16 /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable16 /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable16 /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable16 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable16 /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable17)) { /*if*/
-    variable17 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode9*/) /*Array::is_empty*/;
+    variable17 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable17)) { /*if*/
       variable14 =  variable16 /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode9*/,  variable16 /*listnode8*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode9*/,  variable16 /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable18 = NEW_parser_prod___ATopClassdef___init_atopclassdef( variable14 /*listnode9*/); /*new ATopClassdef*/
   variable17 = variable18;
   variable18 =  variable2 /*nodearraylist7*/;
   variable19 = TAG_Bool(( variable18 /*pclassdefnode10*/==NIT_NULL) || VAL_ISA( variable18 /*pclassdefnode10*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction47___action, 2862); nit_exit(1);}
-  variable19 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable13 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction47___action, LOCATE_parser, 2867); nit_exit(1);}
+  variable19 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable19)) { /*if*/
-    variable19 = ((array___AbstractArray___is_empty_t)CALL( variable10 /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable10 /*listnode11*/) /*Array::is_empty*/;
+    variable19 = ((array___AbstractArray___is_empty_t)CALL( variable10 /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable10 /*listnode11*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable19)) { /*if*/
       variable10 =  variable13 /*listnode5*/ /*listnode11=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable10 /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable10 /*listnode11*/,  variable13 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable10 /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable10 /*listnode11*/,  variable13 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
-  variable19 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable17 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable17 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable17 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable17 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable17 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable17 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*ATopClassdef::==*/)))))));
+  variable19 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable17 /*pclassdefnode6*/ ==  NIT_NULL /*null*/) || (( variable17 /*pclassdefnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable17 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable17 /*pclassdefnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable17 /*pclassdefnode6*/,COLOR_kernel___Object_____eqeq))( variable17 /*pclassdefnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable19)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable10 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable10 /*listnode11*/,  variable17 /*pclassdefnode6*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable10 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable10 /*listnode11*/,  variable17 /*pclassdefnode6*/) /*AbstractArray::add*/;
   }
-  variable19 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable18 /*pclassdefnode10*/ ==  NIT_NULL /*null*/) || (( variable18 /*pclassdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable18 /*pclassdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable18 /*pclassdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable18 /*pclassdefnode10*/,COLOR_kernel___Object_____eqeq))( variable18 /*pclassdefnode10*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable19 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable18 /*pclassdefnode10*/ ==  NIT_NULL /*null*/) || (( variable18 /*pclassdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable18 /*pclassdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable18 /*pclassdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable18 /*pclassdefnode10*/,COLOR_kernel___Object_____eqeq))( variable18 /*pclassdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable19)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable10 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable10 /*listnode11*/,  variable18 /*pclassdefnode10*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable10 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable10 /*listnode11*/,  variable18 /*pclassdefnode10*/) /*AbstractArray::add*/;
   }
   variable20 = NEW_parser_prod___AModule___init_amodule( variable11 /*ppackagedeclnode2*/,  variable9 /*listnode4*/,  variable10 /*listnode11*/); /*new AModule*/
   variable19 = variable20;
@@ -6067,7 +6080,7 @@ void parser___ReduceAction47___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction47___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction47___init, 2884};
+  struct trace_t trace = {NULL, LOCATE_parser, 2889, LOCATE_parser___ReduceAction47___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction47].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction47].i] = 1;
@@ -6075,7 +6088,7 @@ void parser___ReduceAction47___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction48___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction48___action, 2888};
+  struct trace_t trace = {NULL, LOCATE_parser, 2893, LOCATE_parser___ReduceAction48___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -6103,13 +6116,13 @@ void parser___ReduceAction48___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable7 =  variable6 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable7 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction48___action, 2897); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction48___action, LOCATE_parser, 2902); nit_exit(1);}
   variable8 =  variable5 /*nodearraylist2*/;
   variable9 = TAG_Bool(( variable8 /*tkwpackagenode3*/==NIT_NULL) || VAL_ISA( variable8 /*tkwpackagenode3*/, COLOR_TKwpackage, ID_TKwpackage)) /*cast TKwpackage*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction48___action, 2899); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction48___action, LOCATE_parser, 2904); nit_exit(1);}
   variable9 =  variable3 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*tidnode4*/==NIT_NULL) || VAL_ISA( variable9 /*tidnode4*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction48___action, 2901); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction48___action, LOCATE_parser, 2906); nit_exit(1);}
   variable11 = NEW_parser_prod___APackagedecl___init_apackagedecl( variable7 /*pdocnode2*/,  variable8 /*tkwpackagenode3*/,  variable9 /*tidnode4*/); /*new APackagedecl*/
   variable10 = variable11;
   variable1 =  variable10 /*ppackagedeclnode1*/ /*node_list=*/;
@@ -6119,7 +6132,7 @@ void parser___ReduceAction48___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction48___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction48___init, 2910};
+  struct trace_t trace = {NULL, LOCATE_parser, 2915, LOCATE_parser___ReduceAction48___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction48].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction48].i] = 1;
@@ -6127,7 +6140,7 @@ void parser___ReduceAction48___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction49___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction49___action, 2914};
+  struct trace_t trace = {NULL, LOCATE_parser, 2919, LOCATE_parser___ReduceAction49___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -6158,13 +6171,13 @@ void parser___ReduceAction49___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable6 /*nodearraylist2*/;
   variable9 = TAG_Bool(( variable8 /*pvisibilitynode2*/==NIT_NULL) || VAL_ISA( variable8 /*pvisibilitynode2*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction49___action, 2924); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction49___action, LOCATE_parser, 2929); nit_exit(1);}
   variable9 =  variable5 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*tkwimportnode3*/==NIT_NULL) || VAL_ISA( variable9 /*tkwimportnode3*/, COLOR_TKwimport, ID_TKwimport)) /*cast TKwimport*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction49___action, 2926); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction49___action, LOCATE_parser, 2931); nit_exit(1);}
   variable10 =  variable3 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*tidnode4*/==NIT_NULL) || VAL_ISA( variable10 /*tidnode4*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction49___action, 2928); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction49___action, LOCATE_parser, 2933); nit_exit(1);}
   variable12 = NEW_parser_prod___AImport___init_aimport( variable8 /*pvisibilitynode2*/,  variable9 /*tkwimportnode3*/,  variable10 /*tidnode4*/); /*new AImport*/
   variable11 = variable12;
   variable1 =  variable11 /*pimportnode1*/ /*node_list=*/;
@@ -6174,7 +6187,7 @@ void parser___ReduceAction49___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction49___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction49___init, 2937};
+  struct trace_t trace = {NULL, LOCATE_parser, 2942, LOCATE_parser___ReduceAction49___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction49].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction49].i] = 1;
@@ -6182,7 +6195,7 @@ void parser___ReduceAction49___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction50___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction50___action, 2941};
+  struct trace_t trace = {NULL, LOCATE_parser, 2946, LOCATE_parser___ReduceAction50___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -6213,13 +6226,13 @@ void parser___ReduceAction50___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable6 /*nodearraylist2*/;
   variable9 = TAG_Bool(( variable8 /*pvisibilitynode2*/==NIT_NULL) || VAL_ISA( variable8 /*pvisibilitynode2*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction50___action, 2951); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction50___action, LOCATE_parser, 2956); nit_exit(1);}
   variable9 =  variable5 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*tkwimportnode3*/==NIT_NULL) || VAL_ISA( variable9 /*tkwimportnode3*/, COLOR_TKwimport, ID_TKwimport)) /*cast TKwimport*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction50___action, 2953); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction50___action, LOCATE_parser, 2958); nit_exit(1);}
   variable10 =  variable3 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*tkwendnode4*/==NIT_NULL) || VAL_ISA( variable10 /*tkwendnode4*/, COLOR_TKwend, ID_TKwend)) /*cast TKwend*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction50___action, 2955); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction50___action, LOCATE_parser, 2960); nit_exit(1);}
   variable12 = NEW_parser_prod___ANoImport___init_anoimport( variable8 /*pvisibilitynode2*/,  variable9 /*tkwimportnode3*/,  variable10 /*tkwendnode4*/); /*new ANoImport*/
   variable11 = variable12;
   variable1 =  variable11 /*pimportnode1*/ /*node_list=*/;
@@ -6229,7 +6242,7 @@ void parser___ReduceAction50___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction50___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction50___init, 2964};
+  struct trace_t trace = {NULL, LOCATE_parser, 2969, LOCATE_parser___ReduceAction50___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction50].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction50].i] = 1;
@@ -6237,7 +6250,7 @@ void parser___ReduceAction50___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction51___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction51___action, 2968};
+  struct trace_t trace = {NULL, LOCATE_parser, 2973, LOCATE_parser___ReduceAction51___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -6250,14 +6263,14 @@ void parser___ReduceAction51___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*ppropdefnode2*/==NIT_NULL) || VAL_ISA( variable4 /*ppropdefnode2*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction51___action, 2974); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable4 /*ppropdefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))( variable4 /*ppropdefnode2*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction51___action, LOCATE_parser, 2979); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable4 /*ppropdefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))( variable4 /*ppropdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode3*/,  variable4 /*ppropdefnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode3*/,  variable4 /*ppropdefnode2*/) /*AbstractArray::add*/;
   }
   variable6 = NEW_parser_prod___AMainClassdef___init_amainclassdef( variable3 /*listnode3*/); /*new AMainClassdef*/
   variable5 = variable6;
@@ -6268,7 +6281,7 @@ void parser___ReduceAction51___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction51___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction51___init, 2984};
+  struct trace_t trace = {NULL, LOCATE_parser, 2989, LOCATE_parser___ReduceAction51___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction51].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction51].i] = 1;
@@ -6276,7 +6289,7 @@ void parser___ReduceAction51___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction52___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction52___action, 2988};
+  struct trace_t trace = {NULL, LOCATE_parser, 2993, LOCATE_parser___ReduceAction52___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -6293,7 +6306,7 @@ void parser___ReduceAction52___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction52___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction52___init, 2995};
+  struct trace_t trace = {NULL, LOCATE_parser, 3000, LOCATE_parser___ReduceAction52___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction52].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction52].i] = 1;
@@ -6301,7 +6314,7 @@ void parser___ReduceAction52___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction53___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction53___action, 2999};
+  struct trace_t trace = {NULL, LOCATE_parser, 3004, LOCATE_parser___ReduceAction53___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -6321,14 +6334,14 @@ void parser___ReduceAction53___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction53___action, 3007); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable6 /*pexprnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*pexprnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*pexprnode4*/,COLOR_kernel___Object_____eqeq))( variable6 /*pexprnode4*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction53___action, LOCATE_parser, 3012); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable6 /*pexprnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*pexprnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*pexprnode4*/,COLOR_kernel___Object_____eqeq))( variable6 /*pexprnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*listnode5*/,  variable6 /*pexprnode4*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*listnode5*/,  variable6 /*pexprnode4*/) /*AbstractArray::add*/;
   }
   variable8 = NEW_parser_prod___ABlockExpr___init_ablockexpr( variable5 /*listnode5*/); /*new ABlockExpr*/
   variable7 = variable8;
@@ -6341,7 +6354,7 @@ void parser___ReduceAction53___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction53___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction53___init, 3021};
+  struct trace_t trace = {NULL, LOCATE_parser, 3026, LOCATE_parser___ReduceAction53___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction53].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction53].i] = 1;
@@ -6349,7 +6362,7 @@ void parser___ReduceAction53___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction54___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction54___action, 3025};
+  struct trace_t trace = {NULL, LOCATE_parser, 3030, LOCATE_parser___ReduceAction54___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -6373,25 +6386,25 @@ void parser___ReduceAction54___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable4 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction54___action, 3034); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction54___action, LOCATE_parser, 3039); nit_exit(1);}
   variable8 =  variable3 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*listnode5*/==NIT_NULL) || VAL_ISA( variable8 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction54___action, 3036); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*pexprnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*pexprnode4*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction54___action, LOCATE_parser, 3041); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*pexprnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*pexprnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode6*/,  variable7 /*pexprnode4*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode6*/,  variable7 /*pexprnode4*/) /*AbstractArray::add*/;
   }
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode6*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable6 =  variable8 /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode6*/,  variable8 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode6*/,  variable8 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable10 = NEW_parser_prod___ABlockExpr___init_ablockexpr( variable6 /*listnode6*/); /*new ABlockExpr*/
@@ -6405,7 +6418,7 @@ void parser___ReduceAction54___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction54___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction54___init, 3057};
+  struct trace_t trace = {NULL, LOCATE_parser, 3062, LOCATE_parser___ReduceAction54___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction54].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction54].i] = 1;
@@ -6413,7 +6426,7 @@ void parser___ReduceAction54___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction55___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction55___action, 3061};
+  struct trace_t trace = {NULL, LOCATE_parser, 3066, LOCATE_parser___ReduceAction55___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -6449,24 +6462,24 @@ void parser___ReduceAction55___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable9 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable8 = variable9;
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
-  variable11 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable11 = NEW_array___Array___init(); /*new Array[E]*/
   variable10 = variable11;
-  variable12 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable12 = NEW_array___Array___init(); /*new Array[E]*/
   variable11 = variable12;
   variable12 =  variable8 /*nodearraylist1*/;
   variable13 = TAG_Bool(( variable12 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction55___action, 3075); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction55___action, LOCATE_parser, 3080); nit_exit(1);}
   variable13 =  variable7 /*nodearraylist2*/;
   variable14 = TAG_Bool(( variable13 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable13 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction55___action, 3077); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction55___action, LOCATE_parser, 3082); nit_exit(1);}
   variable14 =  variable6 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable14 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction55___action, 3079); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction55___action, LOCATE_parser, 3084); nit_exit(1);}
   variable15 =  variable4 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable15 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction55___action, 3081); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction55___action, LOCATE_parser, 3086); nit_exit(1);}
   variable17 = NEW_parser_prod___AClassdef___init_aclassdef( variable12 /*pdocnode2*/,  NIT_NULL /*null*/,  variable13 /*pvisibilitynode4*/,  variable14 /*pclasskindnode5*/,  variable15 /*tclassidnode6*/,  variable9 /*listnode7*/,  variable10 /*listnode8*/,  variable11 /*listnode9*/); /*new AClassdef*/
   variable16 = variable17;
   variable1 =  variable16 /*pclassdefnode1*/ /*node_list=*/;
@@ -6476,7 +6489,7 @@ void parser___ReduceAction55___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction55___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction55___init, 3095};
+  struct trace_t trace = {NULL, LOCATE_parser, 3100, LOCATE_parser___ReduceAction55___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction55].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction55].i] = 1;
@@ -6484,7 +6497,7 @@ void parser___ReduceAction55___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction56___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction56___action, 3099};
+  struct trace_t trace = {NULL, LOCATE_parser, 3104, LOCATE_parser___ReduceAction56___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -6524,27 +6537,27 @@ void parser___ReduceAction56___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable10 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable9 = variable10;
-  variable11 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable11 = NEW_array___Array___init(); /*new Array[E]*/
   variable10 = variable11;
-  variable12 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable12 = NEW_array___Array___init(); /*new Array[E]*/
   variable11 = variable12;
-  variable13 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable13 = NEW_array___Array___init(); /*new Array[E]*/
   variable12 = variable13;
   variable13 =  variable9 /*nodearraylist1*/;
   variable14 = TAG_Bool(( variable13 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable13 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction56___action, 3114); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction56___action, LOCATE_parser, 3119); nit_exit(1);}
   variable14 =  variable8 /*nodearraylist2*/;
   variable15 = TAG_Bool(( variable14 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable14 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction56___action, 3116); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction56___action, LOCATE_parser, 3121); nit_exit(1);}
   variable15 =  variable7 /*nodearraylist3*/;
   variable16 = TAG_Bool(( variable15 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable15 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction56___action, 3118); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction56___action, LOCATE_parser, 3123); nit_exit(1);}
   variable16 =  variable6 /*nodearraylist4*/;
   variable17 = TAG_Bool(( variable16 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable16 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction56___action, 3120); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction56___action, LOCATE_parser, 3125); nit_exit(1);}
   variable17 =  variable4 /*nodearraylist6*/;
   variable18 = TAG_Bool(( variable17 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable17 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction56___action, 3122); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction56___action, LOCATE_parser, 3127); nit_exit(1);}
   variable19 = NEW_parser_prod___AClassdef___init_aclassdef( variable13 /*pdocnode2*/,  variable14 /*tkwredefnode3*/,  variable15 /*pvisibilitynode4*/,  variable16 /*pclasskindnode5*/,  variable17 /*tclassidnode6*/,  variable10 /*listnode7*/,  variable11 /*listnode8*/,  variable12 /*listnode9*/); /*new AClassdef*/
   variable18 = variable19;
   variable1 =  variable18 /*pclassdefnode1*/ /*node_list=*/;
@@ -6554,7 +6567,7 @@ void parser___ReduceAction56___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction56___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction56___init, 3136};
+  struct trace_t trace = {NULL, LOCATE_parser, 3141, LOCATE_parser___ReduceAction56___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction56].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction56].i] = 1;
@@ -6562,7 +6575,7 @@ void parser___ReduceAction56___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction57___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction57___action, 3140};
+  struct trace_t trace = {NULL, LOCATE_parser, 3145, LOCATE_parser___ReduceAction57___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -6602,34 +6615,34 @@ void parser___ReduceAction57___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable10 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable9 = variable10;
-  variable11 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable11 = NEW_array___Array___init(); /*new Array[E]*/
   variable10 = variable11;
-  variable12 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable12 = NEW_array___Array___init(); /*new Array[E]*/
   variable11 = variable12;
-  variable13 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable13 = NEW_array___Array___init(); /*new Array[E]*/
   variable12 = variable13;
   variable13 =  variable9 /*nodearraylist1*/;
   variable14 = TAG_Bool(( variable13 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable13 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction57___action, 3155); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction57___action, LOCATE_parser, 3160); nit_exit(1);}
   variable14 =  variable8 /*nodearraylist2*/;
   variable15 = TAG_Bool(( variable14 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable14 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction57___action, 3157); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction57___action, LOCATE_parser, 3162); nit_exit(1);}
   variable15 =  variable7 /*nodearraylist3*/;
   variable16 = TAG_Bool(( variable15 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable15 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction57___action, 3159); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction57___action, LOCATE_parser, 3164); nit_exit(1);}
   variable16 =  variable5 /*nodearraylist5*/;
   variable17 = TAG_Bool(( variable16 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable16 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction57___action, 3161); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction57___action, LOCATE_parser, 3166); nit_exit(1);}
   variable17 =  variable4 /*nodearraylist6*/;
   variable18 = TAG_Bool(( variable17 /*listnode7*/==NIT_NULL) || VAL_ISA( variable17 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction57___action, 3163); nit_exit(1);}
-  variable18 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable17 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable17 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable17 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable17 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction57___action, LOCATE_parser, 3168); nit_exit(1);}
+  variable18 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable17 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable17 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable17 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable17 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable17 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable17 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable18)) { /*if*/
-    variable18 = ((array___AbstractArray___is_empty_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable10 /*listnode8*/) /*Array::is_empty*/;
+    variable18 = ((array___AbstractArray___is_empty_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable10 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable18)) { /*if*/
       variable10 =  variable17 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable10 /*listnode8*/,  variable17 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable10 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable10 /*listnode8*/,  variable17 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable19 = NEW_parser_prod___AClassdef___init_aclassdef( variable13 /*pdocnode2*/,  NIT_NULL /*null*/,  variable14 /*pvisibilitynode4*/,  variable15 /*pclasskindnode5*/,  variable16 /*tclassidnode6*/,  variable10 /*listnode8*/,  variable11 /*listnode9*/,  variable12 /*listnode10*/); /*new AClassdef*/
@@ -6641,7 +6654,7 @@ void parser___ReduceAction57___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction57___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction57___init, 3184};
+  struct trace_t trace = {NULL, LOCATE_parser, 3189, LOCATE_parser___ReduceAction57___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction57].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction57].i] = 1;
@@ -6649,7 +6662,7 @@ void parser___ReduceAction57___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction58___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction58___action, 3188};
+  struct trace_t trace = {NULL, LOCATE_parser, 3193, LOCATE_parser___ReduceAction58___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -6693,37 +6706,37 @@ void parser___ReduceAction58___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable11 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable10 = variable11;
-  variable12 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable12 = NEW_array___Array___init(); /*new Array[E]*/
   variable11 = variable12;
-  variable13 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable13 = NEW_array___Array___init(); /*new Array[E]*/
   variable12 = variable13;
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
   variable14 =  variable10 /*nodearraylist1*/;
   variable15 = TAG_Bool(( variable14 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable14 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction58___action, 3204); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction58___action, LOCATE_parser, 3209); nit_exit(1);}
   variable15 =  variable9 /*nodearraylist2*/;
   variable16 = TAG_Bool(( variable15 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable15 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction58___action, 3206); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction58___action, LOCATE_parser, 3211); nit_exit(1);}
   variable16 =  variable8 /*nodearraylist3*/;
   variable17 = TAG_Bool(( variable16 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable16 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction58___action, 3208); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction58___action, LOCATE_parser, 3213); nit_exit(1);}
   variable17 =  variable7 /*nodearraylist4*/;
   variable18 = TAG_Bool(( variable17 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable17 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction58___action, 3210); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction58___action, LOCATE_parser, 3215); nit_exit(1);}
   variable18 =  variable5 /*nodearraylist6*/;
   variable19 = TAG_Bool(( variable18 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable18 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction58___action, 3212); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction58___action, LOCATE_parser, 3217); nit_exit(1);}
   variable19 =  variable4 /*nodearraylist7*/;
   variable20 = TAG_Bool(( variable19 /*listnode7*/==NIT_NULL) || VAL_ISA( variable19 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction58___action, 3214); nit_exit(1);}
-  variable20 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable19 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable19 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable19 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable19 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction58___action, LOCATE_parser, 3219); nit_exit(1);}
+  variable20 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable19 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable19 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable19 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable19 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable19 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable19 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable20)) { /*if*/
-    variable20 = ((array___AbstractArray___is_empty_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable11 /*listnode8*/) /*Array::is_empty*/;
+    variable20 = ((array___AbstractArray___is_empty_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable11 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable20)) { /*if*/
       variable11 =  variable19 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable11 /*listnode8*/,  variable19 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable11 /*listnode8*/,  variable19 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable21 = NEW_parser_prod___AClassdef___init_aclassdef( variable14 /*pdocnode2*/,  variable15 /*tkwredefnode3*/,  variable16 /*pvisibilitynode4*/,  variable17 /*pclasskindnode5*/,  variable18 /*tclassidnode6*/,  variable11 /*listnode8*/,  variable12 /*listnode9*/,  variable13 /*listnode10*/); /*new AClassdef*/
@@ -6735,7 +6748,7 @@ void parser___ReduceAction58___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction58___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction58___init, 3235};
+  struct trace_t trace = {NULL, LOCATE_parser, 3240, LOCATE_parser___ReduceAction58___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction58].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction58].i] = 1;
@@ -6743,7 +6756,7 @@ void parser___ReduceAction58___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction59___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction59___action, 3239};
+  struct trace_t trace = {NULL, LOCATE_parser, 3244, LOCATE_parser___ReduceAction59___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -6783,34 +6796,34 @@ void parser___ReduceAction59___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable10 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable9 = variable10;
-  variable11 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable11 = NEW_array___Array___init(); /*new Array[E]*/
   variable10 = variable11;
-  variable12 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable12 = NEW_array___Array___init(); /*new Array[E]*/
   variable11 = variable12;
-  variable13 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable13 = NEW_array___Array___init(); /*new Array[E]*/
   variable12 = variable13;
   variable13 =  variable9 /*nodearraylist1*/;
   variable14 = TAG_Bool(( variable13 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable13 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction59___action, 3254); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction59___action, LOCATE_parser, 3259); nit_exit(1);}
   variable14 =  variable8 /*nodearraylist2*/;
   variable15 = TAG_Bool(( variable14 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable14 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction59___action, 3256); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction59___action, LOCATE_parser, 3261); nit_exit(1);}
   variable15 =  variable7 /*nodearraylist3*/;
   variable16 = TAG_Bool(( variable15 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable15 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction59___action, 3258); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction59___action, LOCATE_parser, 3263); nit_exit(1);}
   variable16 =  variable5 /*nodearraylist5*/;
   variable17 = TAG_Bool(( variable16 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable16 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction59___action, 3260); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction59___action, LOCATE_parser, 3265); nit_exit(1);}
   variable17 =  variable4 /*nodearraylist6*/;
   variable18 = TAG_Bool(( variable17 /*listnode8*/==NIT_NULL) || VAL_ISA( variable17 /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction59___action, 3262); nit_exit(1);}
-  variable18 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable17 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable17 /*listnode8*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable17 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable17 /*listnode8*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction59___action, LOCATE_parser, 3267); nit_exit(1);}
+  variable18 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable17 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable17 /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable17 /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable17 /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable17 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable17 /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable18)) { /*if*/
-    variable18 = ((array___AbstractArray___is_empty_t)CALL( variable11 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable11 /*listnode9*/) /*Array::is_empty*/;
+    variable18 = ((array___AbstractArray___is_empty_t)CALL( variable11 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable11 /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable18)) { /*if*/
       variable11 =  variable17 /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable11 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable11 /*listnode9*/,  variable17 /*listnode8*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable11 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable11 /*listnode9*/,  variable17 /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable19 = NEW_parser_prod___AClassdef___init_aclassdef( variable13 /*pdocnode2*/,  NIT_NULL /*null*/,  variable14 /*pvisibilitynode4*/,  variable15 /*pclasskindnode5*/,  variable16 /*tclassidnode6*/,  variable10 /*listnode7*/,  variable11 /*listnode9*/,  variable12 /*listnode10*/); /*new AClassdef*/
@@ -6822,7 +6835,7 @@ void parser___ReduceAction59___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction59___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction59___init, 3283};
+  struct trace_t trace = {NULL, LOCATE_parser, 3288, LOCATE_parser___ReduceAction59___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction59].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction59].i] = 1;
@@ -6830,7 +6843,7 @@ void parser___ReduceAction59___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction60___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction60___action, 3287};
+  struct trace_t trace = {NULL, LOCATE_parser, 3292, LOCATE_parser___ReduceAction60___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -6874,37 +6887,37 @@ void parser___ReduceAction60___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable11 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable10 = variable11;
-  variable12 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable12 = NEW_array___Array___init(); /*new Array[E]*/
   variable11 = variable12;
-  variable13 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable13 = NEW_array___Array___init(); /*new Array[E]*/
   variable12 = variable13;
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
   variable14 =  variable10 /*nodearraylist1*/;
   variable15 = TAG_Bool(( variable14 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable14 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction60___action, 3303); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction60___action, LOCATE_parser, 3308); nit_exit(1);}
   variable15 =  variable9 /*nodearraylist2*/;
   variable16 = TAG_Bool(( variable15 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable15 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction60___action, 3305); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction60___action, LOCATE_parser, 3310); nit_exit(1);}
   variable16 =  variable8 /*nodearraylist3*/;
   variable17 = TAG_Bool(( variable16 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable16 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction60___action, 3307); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction60___action, LOCATE_parser, 3312); nit_exit(1);}
   variable17 =  variable7 /*nodearraylist4*/;
   variable18 = TAG_Bool(( variable17 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable17 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction60___action, 3309); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction60___action, LOCATE_parser, 3314); nit_exit(1);}
   variable18 =  variable5 /*nodearraylist6*/;
   variable19 = TAG_Bool(( variable18 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable18 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction60___action, 3311); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction60___action, LOCATE_parser, 3316); nit_exit(1);}
   variable19 =  variable4 /*nodearraylist7*/;
   variable20 = TAG_Bool(( variable19 /*listnode8*/==NIT_NULL) || VAL_ISA( variable19 /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction60___action, 3313); nit_exit(1);}
-  variable20 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable19 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable19 /*listnode8*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable19 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable19 /*listnode8*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction60___action, LOCATE_parser, 3318); nit_exit(1);}
+  variable20 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable19 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable19 /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable19 /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable19 /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable19 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable19 /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable20)) { /*if*/
-    variable20 = ((array___AbstractArray___is_empty_t)CALL( variable12 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable12 /*listnode9*/) /*Array::is_empty*/;
+    variable20 = ((array___AbstractArray___is_empty_t)CALL( variable12 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable12 /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable20)) { /*if*/
       variable12 =  variable19 /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable12 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable12 /*listnode9*/,  variable19 /*listnode8*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable12 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable12 /*listnode9*/,  variable19 /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable21 = NEW_parser_prod___AClassdef___init_aclassdef( variable14 /*pdocnode2*/,  variable15 /*tkwredefnode3*/,  variable16 /*pvisibilitynode4*/,  variable17 /*pclasskindnode5*/,  variable18 /*tclassidnode6*/,  variable11 /*listnode7*/,  variable12 /*listnode9*/,  variable13 /*listnode10*/); /*new AClassdef*/
@@ -6916,7 +6929,7 @@ void parser___ReduceAction60___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction60___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction60___init, 3334};
+  struct trace_t trace = {NULL, LOCATE_parser, 3339, LOCATE_parser___ReduceAction60___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction60].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction60].i] = 1;
@@ -6924,7 +6937,7 @@ void parser___ReduceAction60___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction61___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction61___action, 3338};
+  struct trace_t trace = {NULL, LOCATE_parser, 3343, LOCATE_parser___ReduceAction61___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -6968,46 +6981,46 @@ void parser___ReduceAction61___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable11 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable10 = variable11;
-  variable12 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable12 = NEW_array___Array___init(); /*new Array[E]*/
   variable11 = variable12;
-  variable13 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable13 = NEW_array___Array___init(); /*new Array[E]*/
   variable12 = variable13;
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
   variable14 =  variable10 /*nodearraylist1*/;
   variable15 = TAG_Bool(( variable14 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable14 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction61___action, 3354); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction61___action, LOCATE_parser, 3359); nit_exit(1);}
   variable15 =  variable9 /*nodearraylist2*/;
   variable16 = TAG_Bool(( variable15 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable15 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction61___action, 3356); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction61___action, LOCATE_parser, 3361); nit_exit(1);}
   variable16 =  variable8 /*nodearraylist3*/;
   variable17 = TAG_Bool(( variable16 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable16 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction61___action, 3358); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction61___action, LOCATE_parser, 3363); nit_exit(1);}
   variable17 =  variable6 /*nodearraylist5*/;
   variable18 = TAG_Bool(( variable17 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable17 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction61___action, 3360); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction61___action, LOCATE_parser, 3365); nit_exit(1);}
   variable18 =  variable5 /*nodearraylist6*/;
   variable19 = TAG_Bool(( variable18 /*listnode7*/==NIT_NULL) || VAL_ISA( variable18 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction61___action, 3362); nit_exit(1);}
-  variable19 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable18 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable18 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable18 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable18 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction61___action, LOCATE_parser, 3367); nit_exit(1);}
+  variable19 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable18 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable18 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable18 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable18 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable18 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable18 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable19)) { /*if*/
-    variable19 = ((array___AbstractArray___is_empty_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable11 /*listnode8*/) /*Array::is_empty*/;
+    variable19 = ((array___AbstractArray___is_empty_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable11 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable19)) { /*if*/
       variable11 =  variable18 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable11 /*listnode8*/,  variable18 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable11 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable11 /*listnode8*/,  variable18 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable19 =  variable4 /*nodearraylist7*/;
   variable20 = TAG_Bool(( variable19 /*listnode9*/==NIT_NULL) || VAL_ISA( variable19 /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction61___action, 3371); nit_exit(1);}
-  variable20 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable19 /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable19 /*listnode9*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable19 /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable19 /*listnode9*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction61___action, LOCATE_parser, 3376); nit_exit(1);}
+  variable20 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable19 /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable19 /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable19 /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable19 /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable19 /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable19 /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable20)) { /*if*/
-    variable20 = ((array___AbstractArray___is_empty_t)CALL( variable12 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable12 /*listnode10*/) /*Array::is_empty*/;
+    variable20 = ((array___AbstractArray___is_empty_t)CALL( variable12 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable12 /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable20)) { /*if*/
       variable12 =  variable19 /*listnode9*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable12 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable12 /*listnode10*/,  variable19 /*listnode9*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable12 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable12 /*listnode10*/,  variable19 /*listnode9*/) /*IndexedCollection::append*/;
     }
   }
   variable21 = NEW_parser_prod___AClassdef___init_aclassdef( variable14 /*pdocnode2*/,  NIT_NULL /*null*/,  variable15 /*pvisibilitynode4*/,  variable16 /*pclasskindnode5*/,  variable17 /*tclassidnode6*/,  variable11 /*listnode8*/,  variable12 /*listnode10*/,  variable13 /*listnode11*/); /*new AClassdef*/
@@ -7019,7 +7032,7 @@ void parser___ReduceAction61___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction61___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction61___init, 3392};
+  struct trace_t trace = {NULL, LOCATE_parser, 3397, LOCATE_parser___ReduceAction61___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction61].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction61].i] = 1;
@@ -7027,7 +7040,7 @@ void parser___ReduceAction61___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction62___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction62___action, 3396};
+  struct trace_t trace = {NULL, LOCATE_parser, 3401, LOCATE_parser___ReduceAction62___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -7075,49 +7088,49 @@ void parser___ReduceAction62___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable12 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable11 = variable12;
-  variable13 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable13 = NEW_array___Array___init(); /*new Array[E]*/
   variable12 = variable13;
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
-  variable15 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable15 = NEW_array___Array___init(); /*new Array[E]*/
   variable14 = variable15;
   variable15 =  variable11 /*nodearraylist1*/;
   variable16 = TAG_Bool(( variable15 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable15 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction62___action, 3413); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction62___action, LOCATE_parser, 3418); nit_exit(1);}
   variable16 =  variable10 /*nodearraylist2*/;
   variable17 = TAG_Bool(( variable16 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable16 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction62___action, 3415); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction62___action, LOCATE_parser, 3420); nit_exit(1);}
   variable17 =  variable9 /*nodearraylist3*/;
   variable18 = TAG_Bool(( variable17 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable17 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction62___action, 3417); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction62___action, LOCATE_parser, 3422); nit_exit(1);}
   variable18 =  variable8 /*nodearraylist4*/;
   variable19 = TAG_Bool(( variable18 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable18 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction62___action, 3419); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction62___action, LOCATE_parser, 3424); nit_exit(1);}
   variable19 =  variable6 /*nodearraylist6*/;
   variable20 = TAG_Bool(( variable19 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable19 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction62___action, 3421); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction62___action, LOCATE_parser, 3426); nit_exit(1);}
   variable20 =  variable5 /*nodearraylist7*/;
   variable21 = TAG_Bool(( variable20 /*listnode7*/==NIT_NULL) || VAL_ISA( variable20 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction62___action, 3423); nit_exit(1);}
-  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable20 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable20 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable20 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable20 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction62___action, LOCATE_parser, 3428); nit_exit(1);}
+  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable20 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable20 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable20 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable20 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable20 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable20 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable21)) { /*if*/
-    variable21 = ((array___AbstractArray___is_empty_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable12 /*listnode8*/) /*Array::is_empty*/;
+    variable21 = ((array___AbstractArray___is_empty_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable12 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable21)) { /*if*/
       variable12 =  variable20 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable12 /*listnode8*/,  variable20 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable12 /*listnode8*/,  variable20 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable21 =  variable4 /*nodearraylist8*/;
   variable22 = TAG_Bool(( variable21 /*listnode9*/==NIT_NULL) || VAL_ISA( variable21 /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction62___action, 3432); nit_exit(1);}
-  variable22 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable21 /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable21 /*listnode9*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable21 /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable21 /*listnode9*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction62___action, LOCATE_parser, 3437); nit_exit(1);}
+  variable22 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable21 /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable21 /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable21 /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable21 /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable21 /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable21 /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable22)) { /*if*/
-    variable22 = ((array___AbstractArray___is_empty_t)CALL( variable13 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable13 /*listnode10*/) /*Array::is_empty*/;
+    variable22 = ((array___AbstractArray___is_empty_t)CALL( variable13 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable13 /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable22)) { /*if*/
       variable13 =  variable21 /*listnode9*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable13 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable13 /*listnode10*/,  variable21 /*listnode9*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable13 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable13 /*listnode10*/,  variable21 /*listnode9*/) /*IndexedCollection::append*/;
     }
   }
   variable23 = NEW_parser_prod___AClassdef___init_aclassdef( variable15 /*pdocnode2*/,  variable16 /*tkwredefnode3*/,  variable17 /*pvisibilitynode4*/,  variable18 /*pclasskindnode5*/,  variable19 /*tclassidnode6*/,  variable12 /*listnode8*/,  variable13 /*listnode10*/,  variable14 /*listnode11*/); /*new AClassdef*/
@@ -7129,7 +7142,7 @@ void parser___ReduceAction62___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction62___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction62___init, 3453};
+  struct trace_t trace = {NULL, LOCATE_parser, 3458, LOCATE_parser___ReduceAction62___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction62].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction62].i] = 1;
@@ -7137,7 +7150,7 @@ void parser___ReduceAction62___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction63___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction63___action, 3457};
+  struct trace_t trace = {NULL, LOCATE_parser, 3462, LOCATE_parser___ReduceAction63___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -7180,30 +7193,30 @@ void parser___ReduceAction63___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable11 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable10 = variable11;
-  variable12 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable12 = NEW_array___Array___init(); /*new Array[E]*/
   variable11 = variable12;
-  variable13 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable13 = NEW_array___Array___init(); /*new Array[E]*/
   variable12 = variable13;
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
   variable14 =  variable10 /*nodearraylist1*/;
   variable15 = TAG_Bool(( variable14 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable14 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction63___action, 3473); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction63___action, LOCATE_parser, 3478); nit_exit(1);}
   variable15 =  variable9 /*nodearraylist2*/;
   variable16 = TAG_Bool(( variable15 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable15 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction63___action, 3475); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction63___action, LOCATE_parser, 3480); nit_exit(1);}
   variable16 =  variable8 /*nodearraylist3*/;
   variable17 = TAG_Bool(( variable16 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable16 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction63___action, 3477); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction63___action, LOCATE_parser, 3482); nit_exit(1);}
   variable17 =  variable6 /*nodearraylist5*/;
   variable18 = TAG_Bool(( variable17 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable17 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction63___action, 3479); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction63___action, LOCATE_parser, 3484); nit_exit(1);}
   variable18 =  variable5 /*nodearraylist6*/;
   variable19 = TAG_Bool(( variable18 /*ppropdefnode9*/==NIT_NULL) || VAL_ISA( variable18 /*ppropdefnode9*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction63___action, 3481); nit_exit(1);}
-  variable19 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable18 /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable18 /*ppropdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable18 /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable18 /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable18 /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))( variable18 /*ppropdefnode9*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction63___action, LOCATE_parser, 3486); nit_exit(1);}
+  variable19 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable18 /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable18 /*ppropdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable18 /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable18 /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable18 /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))( variable18 /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable19)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable13 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable13 /*listnode10*/,  variable18 /*ppropdefnode9*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable13 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable13 /*listnode10*/,  variable18 /*ppropdefnode9*/) /*AbstractArray::add*/;
   }
   variable20 = NEW_parser_prod___AClassdef___init_aclassdef( variable14 /*pdocnode2*/,  NIT_NULL /*null*/,  variable15 /*pvisibilitynode4*/,  variable16 /*pclasskindnode5*/,  variable17 /*tclassidnode6*/,  variable11 /*listnode7*/,  variable12 /*listnode8*/,  variable13 /*listnode10*/); /*new AClassdef*/
   variable19 = variable20;
@@ -7214,7 +7227,7 @@ void parser___ReduceAction63___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction63___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction63___init, 3498};
+  struct trace_t trace = {NULL, LOCATE_parser, 3503, LOCATE_parser___ReduceAction63___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction63].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction63].i] = 1;
@@ -7222,7 +7235,7 @@ void parser___ReduceAction63___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction64___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction64___action, 3502};
+  struct trace_t trace = {NULL, LOCATE_parser, 3507, LOCATE_parser___ReduceAction64___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -7269,41 +7282,41 @@ void parser___ReduceAction64___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable12 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable11 = variable12;
-  variable13 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable13 = NEW_array___Array___init(); /*new Array[E]*/
   variable12 = variable13;
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
-  variable15 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable15 = NEW_array___Array___init(); /*new Array[E]*/
   variable14 = variable15;
   variable15 =  variable11 /*nodearraylist1*/;
   variable16 = TAG_Bool(( variable15 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable15 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction64___action, 3519); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction64___action, LOCATE_parser, 3524); nit_exit(1);}
   variable16 =  variable10 /*nodearraylist2*/;
   variable17 = TAG_Bool(( variable16 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable16 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction64___action, 3521); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction64___action, LOCATE_parser, 3526); nit_exit(1);}
   variable17 =  variable9 /*nodearraylist3*/;
   variable18 = TAG_Bool(( variable17 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable17 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction64___action, 3523); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction64___action, LOCATE_parser, 3528); nit_exit(1);}
   variable18 =  variable7 /*nodearraylist5*/;
   variable19 = TAG_Bool(( variable18 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable18 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction64___action, 3525); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction64___action, LOCATE_parser, 3530); nit_exit(1);}
   variable19 =  variable6 /*nodearraylist6*/;
   variable20 = TAG_Bool(( variable19 /*ppropdefnode9*/==NIT_NULL) || VAL_ISA( variable19 /*ppropdefnode9*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction64___action, 3527); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction64___action, LOCATE_parser, 3532); nit_exit(1);}
   variable20 =  variable4 /*nodearraylist8*/;
   variable21 = TAG_Bool(( variable20 /*listnode10*/==NIT_NULL) || VAL_ISA( variable20 /*listnode10*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction64___action, 3529); nit_exit(1);}
-  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable19 /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable19 /*ppropdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable19 /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable19 /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable19 /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))( variable19 /*ppropdefnode9*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction64___action, LOCATE_parser, 3534); nit_exit(1);}
+  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable19 /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable19 /*ppropdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable19 /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable19 /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable19 /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))( variable19 /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable21)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable14 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable14 /*listnode11*/,  variable19 /*ppropdefnode9*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable14 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable14 /*listnode11*/,  variable19 /*ppropdefnode9*/) /*AbstractArray::add*/;
   }
-  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable20 /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable20 /*listnode10*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable20 /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable20 /*listnode10*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable20 /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable20 /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable20 /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable20 /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable20 /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable20 /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable21)) { /*if*/
-    variable21 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode11*/) /*Array::is_empty*/;
+    variable21 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode11*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable21)) { /*if*/
       variable14 =  variable20 /*listnode10*/ /*listnode11=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode11*/,  variable20 /*listnode10*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode11*/,  variable20 /*listnode10*/) /*IndexedCollection::append*/;
     }
   }
   variable22 = NEW_parser_prod___AClassdef___init_aclassdef( variable15 /*pdocnode2*/,  NIT_NULL /*null*/,  variable16 /*pvisibilitynode4*/,  variable17 /*pclasskindnode5*/,  variable18 /*tclassidnode6*/,  variable12 /*listnode7*/,  variable13 /*listnode8*/,  variable14 /*listnode11*/); /*new AClassdef*/
@@ -7315,7 +7328,7 @@ void parser___ReduceAction64___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction64___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction64___init, 3553};
+  struct trace_t trace = {NULL, LOCATE_parser, 3558, LOCATE_parser___ReduceAction64___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction64].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction64].i] = 1;
@@ -7323,7 +7336,7 @@ void parser___ReduceAction64___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction65___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction65___action, 3557};
+  struct trace_t trace = {NULL, LOCATE_parser, 3562, LOCATE_parser___ReduceAction65___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -7370,33 +7383,33 @@ void parser___ReduceAction65___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable12 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable11 = variable12;
-  variable13 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable13 = NEW_array___Array___init(); /*new Array[E]*/
   variable12 = variable13;
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
-  variable15 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable15 = NEW_array___Array___init(); /*new Array[E]*/
   variable14 = variable15;
   variable15 =  variable11 /*nodearraylist1*/;
   variable16 = TAG_Bool(( variable15 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable15 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction65___action, 3574); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction65___action, LOCATE_parser, 3579); nit_exit(1);}
   variable16 =  variable10 /*nodearraylist2*/;
   variable17 = TAG_Bool(( variable16 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable16 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction65___action, 3576); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction65___action, LOCATE_parser, 3581); nit_exit(1);}
   variable17 =  variable9 /*nodearraylist3*/;
   variable18 = TAG_Bool(( variable17 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable17 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction65___action, 3578); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction65___action, LOCATE_parser, 3583); nit_exit(1);}
   variable18 =  variable8 /*nodearraylist4*/;
   variable19 = TAG_Bool(( variable18 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable18 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction65___action, 3580); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction65___action, LOCATE_parser, 3585); nit_exit(1);}
   variable19 =  variable6 /*nodearraylist6*/;
   variable20 = TAG_Bool(( variable19 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable19 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction65___action, 3582); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction65___action, LOCATE_parser, 3587); nit_exit(1);}
   variable20 =  variable5 /*nodearraylist7*/;
   variable21 = TAG_Bool(( variable20 /*ppropdefnode9*/==NIT_NULL) || VAL_ISA( variable20 /*ppropdefnode9*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction65___action, 3584); nit_exit(1);}
-  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable20 /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable20 /*ppropdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable20 /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable20 /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable20 /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))( variable20 /*ppropdefnode9*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction65___action, LOCATE_parser, 3589); nit_exit(1);}
+  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable20 /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable20 /*ppropdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable20 /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable20 /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable20 /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))( variable20 /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable21)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable14 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable14 /*listnode10*/,  variable20 /*ppropdefnode9*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable14 /*listnode10*/,COLOR_abstract_collection___SimpleCollection___add))( variable14 /*listnode10*/,  variable20 /*ppropdefnode9*/) /*AbstractArray::add*/;
   }
   variable22 = NEW_parser_prod___AClassdef___init_aclassdef( variable15 /*pdocnode2*/,  variable16 /*tkwredefnode3*/,  variable17 /*pvisibilitynode4*/,  variable18 /*pclasskindnode5*/,  variable19 /*tclassidnode6*/,  variable12 /*listnode7*/,  variable13 /*listnode8*/,  variable14 /*listnode10*/); /*new AClassdef*/
   variable21 = variable22;
@@ -7407,7 +7420,7 @@ void parser___ReduceAction65___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction65___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction65___init, 3601};
+  struct trace_t trace = {NULL, LOCATE_parser, 3606, LOCATE_parser___ReduceAction65___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction65].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction65].i] = 1;
@@ -7415,7 +7428,7 @@ void parser___ReduceAction65___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction66___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction66___action, 3605};
+  struct trace_t trace = {NULL, LOCATE_parser, 3610, LOCATE_parser___ReduceAction66___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -7466,44 +7479,44 @@ void parser___ReduceAction66___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable13 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable12 = variable13;
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
-  variable15 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable15 = NEW_array___Array___init(); /*new Array[E]*/
   variable14 = variable15;
-  variable16 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable16 = NEW_array___Array___init(); /*new Array[E]*/
   variable15 = variable16;
   variable16 =  variable12 /*nodearraylist1*/;
   variable17 = TAG_Bool(( variable16 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable16 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction66___action, 3623); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction66___action, LOCATE_parser, 3628); nit_exit(1);}
   variable17 =  variable11 /*nodearraylist2*/;
   variable18 = TAG_Bool(( variable17 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable17 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction66___action, 3625); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction66___action, LOCATE_parser, 3630); nit_exit(1);}
   variable18 =  variable10 /*nodearraylist3*/;
   variable19 = TAG_Bool(( variable18 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable18 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction66___action, 3627); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction66___action, LOCATE_parser, 3632); nit_exit(1);}
   variable19 =  variable9 /*nodearraylist4*/;
   variable20 = TAG_Bool(( variable19 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable19 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction66___action, 3629); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction66___action, LOCATE_parser, 3634); nit_exit(1);}
   variable20 =  variable7 /*nodearraylist6*/;
   variable21 = TAG_Bool(( variable20 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable20 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction66___action, 3631); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction66___action, LOCATE_parser, 3636); nit_exit(1);}
   variable21 =  variable6 /*nodearraylist7*/;
   variable22 = TAG_Bool(( variable21 /*ppropdefnode9*/==NIT_NULL) || VAL_ISA( variable21 /*ppropdefnode9*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction66___action, 3633); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction66___action, LOCATE_parser, 3638); nit_exit(1);}
   variable22 =  variable4 /*nodearraylist9*/;
   variable23 = TAG_Bool(( variable22 /*listnode10*/==NIT_NULL) || VAL_ISA( variable22 /*listnode10*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction66___action, 3635); nit_exit(1);}
-  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable21 /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable21 /*ppropdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable21 /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable21 /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable21 /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))( variable21 /*ppropdefnode9*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction66___action, LOCATE_parser, 3640); nit_exit(1);}
+  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable21 /*ppropdefnode9*/ ==  NIT_NULL /*null*/) || (( variable21 /*ppropdefnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable21 /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable21 /*ppropdefnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable21 /*ppropdefnode9*/,COLOR_kernel___Object_____eqeq))( variable21 /*ppropdefnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable23)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable15 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable15 /*listnode11*/,  variable21 /*ppropdefnode9*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable15 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable15 /*listnode11*/,  variable21 /*ppropdefnode9*/) /*AbstractArray::add*/;
   }
-  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable22 /*listnode10*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable22 /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable22 /*listnode10*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*listnode10*/ ==  NIT_NULL /*null*/) || (( variable22 /*listnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable22 /*listnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable22 /*listnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable22 /*listnode10*/,COLOR_kernel___Object_____eqeq))( variable22 /*listnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable23)) { /*if*/
-    variable23 = ((array___AbstractArray___is_empty_t)CALL( variable15 /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable15 /*listnode11*/) /*Array::is_empty*/;
+    variable23 = ((array___AbstractArray___is_empty_t)CALL( variable15 /*listnode11*/,COLOR_abstract_collection___Collection___is_empty))( variable15 /*listnode11*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable23)) { /*if*/
       variable15 =  variable22 /*listnode10*/ /*listnode11=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable15 /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable15 /*listnode11*/,  variable22 /*listnode10*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable15 /*listnode11*/,COLOR_abstract_collection___IndexedCollection___append))( variable15 /*listnode11*/,  variable22 /*listnode10*/) /*IndexedCollection::append*/;
     }
   }
   variable24 = NEW_parser_prod___AClassdef___init_aclassdef( variable16 /*pdocnode2*/,  variable17 /*tkwredefnode3*/,  variable18 /*pvisibilitynode4*/,  variable19 /*pclasskindnode5*/,  variable20 /*tclassidnode6*/,  variable13 /*listnode7*/,  variable14 /*listnode8*/,  variable15 /*listnode11*/); /*new AClassdef*/
@@ -7515,7 +7528,7 @@ void parser___ReduceAction66___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction66___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction66___init, 3659};
+  struct trace_t trace = {NULL, LOCATE_parser, 3664, LOCATE_parser___ReduceAction66___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction66].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction66].i] = 1;
@@ -7523,7 +7536,7 @@ void parser___ReduceAction66___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction67___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction67___action, 3663};
+  struct trace_t trace = {NULL, LOCATE_parser, 3668, LOCATE_parser___ReduceAction67___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -7570,42 +7583,42 @@ void parser___ReduceAction67___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable12 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable11 = variable12;
-  variable13 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable13 = NEW_array___Array___init(); /*new Array[E]*/
   variable12 = variable13;
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
-  variable15 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable15 = NEW_array___Array___init(); /*new Array[E]*/
   variable14 = variable15;
   variable15 =  variable11 /*nodearraylist1*/;
   variable16 = TAG_Bool(( variable15 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable15 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction67___action, 3680); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction67___action, LOCATE_parser, 3685); nit_exit(1);}
   variable16 =  variable10 /*nodearraylist2*/;
   variable17 = TAG_Bool(( variable16 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable16 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction67___action, 3682); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction67___action, LOCATE_parser, 3687); nit_exit(1);}
   variable17 =  variable9 /*nodearraylist3*/;
   variable18 = TAG_Bool(( variable17 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable17 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction67___action, 3684); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction67___action, LOCATE_parser, 3689); nit_exit(1);}
   variable18 =  variable7 /*nodearraylist5*/;
   variable19 = TAG_Bool(( variable18 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable18 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction67___action, 3686); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction67___action, LOCATE_parser, 3691); nit_exit(1);}
   variable19 =  variable6 /*nodearraylist6*/;
   variable20 = TAG_Bool(( variable19 /*listnode7*/==NIT_NULL) || VAL_ISA( variable19 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction67___action, 3688); nit_exit(1);}
-  variable20 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable19 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable19 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable19 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable19 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction67___action, LOCATE_parser, 3693); nit_exit(1);}
+  variable20 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable19 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable19 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable19 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable19 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable19 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable19 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable20)) { /*if*/
-    variable20 = ((array___AbstractArray___is_empty_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable12 /*listnode8*/) /*Array::is_empty*/;
+    variable20 = ((array___AbstractArray___is_empty_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable12 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable20)) { /*if*/
       variable12 =  variable19 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable12 /*listnode8*/,  variable19 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable12 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable12 /*listnode8*/,  variable19 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable20 =  variable5 /*nodearraylist7*/;
   variable21 = TAG_Bool(( variable20 /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable20 /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction67___action, 3697); nit_exit(1);}
-  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable20 /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable20 /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable20 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable20 /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable20 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable20 /*ppropdefnode10*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction67___action, LOCATE_parser, 3702); nit_exit(1);}
+  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable20 /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable20 /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable20 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable20 /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable20 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable20 /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable21)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable14 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable14 /*listnode11*/,  variable20 /*ppropdefnode10*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable14 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable14 /*listnode11*/,  variable20 /*ppropdefnode10*/) /*AbstractArray::add*/;
   }
   variable22 = NEW_parser_prod___AClassdef___init_aclassdef( variable15 /*pdocnode2*/,  NIT_NULL /*null*/,  variable16 /*pvisibilitynode4*/,  variable17 /*pclasskindnode5*/,  variable18 /*tclassidnode6*/,  variable12 /*listnode8*/,  variable13 /*listnode9*/,  variable14 /*listnode11*/); /*new AClassdef*/
   variable21 = variable22;
@@ -7616,7 +7629,7 @@ void parser___ReduceAction67___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction67___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction67___init, 3714};
+  struct trace_t trace = {NULL, LOCATE_parser, 3719, LOCATE_parser___ReduceAction67___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction67].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction67].i] = 1;
@@ -7624,7 +7637,7 @@ void parser___ReduceAction67___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction68___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction68___action, 3718};
+  struct trace_t trace = {NULL, LOCATE_parser, 3723, LOCATE_parser___ReduceAction68___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -7675,53 +7688,53 @@ void parser___ReduceAction68___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable13 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable12 = variable13;
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
-  variable15 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable15 = NEW_array___Array___init(); /*new Array[E]*/
   variable14 = variable15;
-  variable16 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable16 = NEW_array___Array___init(); /*new Array[E]*/
   variable15 = variable16;
   variable16 =  variable12 /*nodearraylist1*/;
   variable17 = TAG_Bool(( variable16 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable16 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction68___action, 3736); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction68___action, LOCATE_parser, 3741); nit_exit(1);}
   variable17 =  variable11 /*nodearraylist2*/;
   variable18 = TAG_Bool(( variable17 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable17 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction68___action, 3738); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction68___action, LOCATE_parser, 3743); nit_exit(1);}
   variable18 =  variable10 /*nodearraylist3*/;
   variable19 = TAG_Bool(( variable18 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable18 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction68___action, 3740); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction68___action, LOCATE_parser, 3745); nit_exit(1);}
   variable19 =  variable8 /*nodearraylist5*/;
   variable20 = TAG_Bool(( variable19 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable19 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction68___action, 3742); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction68___action, LOCATE_parser, 3747); nit_exit(1);}
   variable20 =  variable7 /*nodearraylist6*/;
   variable21 = TAG_Bool(( variable20 /*listnode7*/==NIT_NULL) || VAL_ISA( variable20 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction68___action, 3744); nit_exit(1);}
-  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable20 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable20 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable20 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable20 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction68___action, LOCATE_parser, 3749); nit_exit(1);}
+  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable20 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable20 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable20 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable20 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable20 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable20 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable21)) { /*if*/
-    variable21 = ((array___AbstractArray___is_empty_t)CALL( variable13 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable13 /*listnode8*/) /*Array::is_empty*/;
+    variable21 = ((array___AbstractArray___is_empty_t)CALL( variable13 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable13 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable21)) { /*if*/
       variable13 =  variable20 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable13 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable13 /*listnode8*/,  variable20 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable13 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable13 /*listnode8*/,  variable20 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable21 =  variable6 /*nodearraylist7*/;
   variable22 = TAG_Bool(( variable21 /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable21 /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction68___action, 3753); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction68___action, LOCATE_parser, 3758); nit_exit(1);}
   variable22 =  variable4 /*nodearraylist9*/;
   variable23 = TAG_Bool(( variable22 /*listnode11*/==NIT_NULL) || VAL_ISA( variable22 /*listnode11*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction68___action, 3755); nit_exit(1);}
-  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable21 /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable21 /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable21 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable21 /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable21 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable21 /*ppropdefnode10*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction68___action, LOCATE_parser, 3760); nit_exit(1);}
+  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable21 /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable21 /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable21 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable21 /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable21 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable21 /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable23)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable15 /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable15 /*listnode12*/,  variable21 /*ppropdefnode10*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable15 /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable15 /*listnode12*/,  variable21 /*ppropdefnode10*/) /*AbstractArray::add*/;
   }
-  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable22 /*listnode11*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable22 /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable22 /*listnode11*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable22 /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable22 /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable22 /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable22 /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable22 /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable23)) { /*if*/
-    variable23 = ((array___AbstractArray___is_empty_t)CALL( variable15 /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable15 /*listnode12*/) /*Array::is_empty*/;
+    variable23 = ((array___AbstractArray___is_empty_t)CALL( variable15 /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable15 /*listnode12*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable23)) { /*if*/
       variable15 =  variable22 /*listnode11*/ /*listnode12=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable15 /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable15 /*listnode12*/,  variable22 /*listnode11*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable15 /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable15 /*listnode12*/,  variable22 /*listnode11*/) /*IndexedCollection::append*/;
     }
   }
   variable24 = NEW_parser_prod___AClassdef___init_aclassdef( variable16 /*pdocnode2*/,  NIT_NULL /*null*/,  variable17 /*pvisibilitynode4*/,  variable18 /*pclasskindnode5*/,  variable19 /*tclassidnode6*/,  variable13 /*listnode8*/,  variable14 /*listnode9*/,  variable15 /*listnode12*/); /*new AClassdef*/
@@ -7733,7 +7746,7 @@ void parser___ReduceAction68___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction68___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction68___init, 3779};
+  struct trace_t trace = {NULL, LOCATE_parser, 3784, LOCATE_parser___ReduceAction68___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction68].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction68].i] = 1;
@@ -7741,7 +7754,7 @@ void parser___ReduceAction68___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction69___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction69___action, 3783};
+  struct trace_t trace = {NULL, LOCATE_parser, 3788, LOCATE_parser___ReduceAction69___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -7792,45 +7805,45 @@ void parser___ReduceAction69___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable13 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable12 = variable13;
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
-  variable15 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable15 = NEW_array___Array___init(); /*new Array[E]*/
   variable14 = variable15;
-  variable16 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable16 = NEW_array___Array___init(); /*new Array[E]*/
   variable15 = variable16;
   variable16 =  variable12 /*nodearraylist1*/;
   variable17 = TAG_Bool(( variable16 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable16 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction69___action, 3801); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction69___action, LOCATE_parser, 3806); nit_exit(1);}
   variable17 =  variable11 /*nodearraylist2*/;
   variable18 = TAG_Bool(( variable17 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable17 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction69___action, 3803); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction69___action, LOCATE_parser, 3808); nit_exit(1);}
   variable18 =  variable10 /*nodearraylist3*/;
   variable19 = TAG_Bool(( variable18 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable18 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction69___action, 3805); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction69___action, LOCATE_parser, 3810); nit_exit(1);}
   variable19 =  variable9 /*nodearraylist4*/;
   variable20 = TAG_Bool(( variable19 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable19 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction69___action, 3807); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction69___action, LOCATE_parser, 3812); nit_exit(1);}
   variable20 =  variable7 /*nodearraylist6*/;
   variable21 = TAG_Bool(( variable20 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable20 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction69___action, 3809); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction69___action, LOCATE_parser, 3814); nit_exit(1);}
   variable21 =  variable6 /*nodearraylist7*/;
   variable22 = TAG_Bool(( variable21 /*listnode7*/==NIT_NULL) || VAL_ISA( variable21 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction69___action, 3811); nit_exit(1);}
-  variable22 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable21 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable21 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable21 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable21 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction69___action, LOCATE_parser, 3816); nit_exit(1);}
+  variable22 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable21 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable21 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable21 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable21 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable21 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable21 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable22)) { /*if*/
-    variable22 = ((array___AbstractArray___is_empty_t)CALL( variable13 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable13 /*listnode8*/) /*Array::is_empty*/;
+    variable22 = ((array___AbstractArray___is_empty_t)CALL( variable13 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable13 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable22)) { /*if*/
       variable13 =  variable21 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable13 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable13 /*listnode8*/,  variable21 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable13 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable13 /*listnode8*/,  variable21 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable22 =  variable5 /*nodearraylist8*/;
   variable23 = TAG_Bool(( variable22 /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable22 /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction69___action, 3820); nit_exit(1);}
-  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable22 /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable22 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable22 /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable22 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable22 /*ppropdefnode10*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction69___action, LOCATE_parser, 3825); nit_exit(1);}
+  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable22 /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable22 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable22 /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable22 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable22 /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable23)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable15 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable15 /*listnode11*/,  variable22 /*ppropdefnode10*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable15 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable15 /*listnode11*/,  variable22 /*ppropdefnode10*/) /*AbstractArray::add*/;
   }
   variable24 = NEW_parser_prod___AClassdef___init_aclassdef( variable16 /*pdocnode2*/,  variable17 /*tkwredefnode3*/,  variable18 /*pvisibilitynode4*/,  variable19 /*pclasskindnode5*/,  variable20 /*tclassidnode6*/,  variable13 /*listnode8*/,  variable14 /*listnode9*/,  variable15 /*listnode11*/); /*new AClassdef*/
   variable23 = variable24;
@@ -7841,7 +7854,7 @@ void parser___ReduceAction69___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction69___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction69___init, 3837};
+  struct trace_t trace = {NULL, LOCATE_parser, 3842, LOCATE_parser___ReduceAction69___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction69].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction69].i] = 1;
@@ -7849,7 +7862,7 @@ void parser___ReduceAction69___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction70___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction70___action, 3841};
+  struct trace_t trace = {NULL, LOCATE_parser, 3846, LOCATE_parser___ReduceAction70___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -7904,56 +7917,56 @@ void parser___ReduceAction70___action(val_t  self, val_t  param0) {
   variable12 = variable13;
   variable14 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable13 = variable14;
-  variable15 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable15 = NEW_array___Array___init(); /*new Array[E]*/
   variable14 = variable15;
-  variable16 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable16 = NEW_array___Array___init(); /*new Array[E]*/
   variable15 = variable16;
-  variable17 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable17 = NEW_array___Array___init(); /*new Array[E]*/
   variable16 = variable17;
   variable17 =  variable13 /*nodearraylist1*/;
   variable18 = TAG_Bool(( variable17 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable17 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction70___action, 3860); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 3865); nit_exit(1);}
   variable18 =  variable12 /*nodearraylist2*/;
   variable19 = TAG_Bool(( variable18 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable18 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction70___action, 3862); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 3867); nit_exit(1);}
   variable19 =  variable11 /*nodearraylist3*/;
   variable20 = TAG_Bool(( variable19 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable19 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction70___action, 3864); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 3869); nit_exit(1);}
   variable20 =  variable10 /*nodearraylist4*/;
   variable21 = TAG_Bool(( variable20 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable20 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction70___action, 3866); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 3871); nit_exit(1);}
   variable21 =  variable8 /*nodearraylist6*/;
   variable22 = TAG_Bool(( variable21 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable21 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction70___action, 3868); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 3873); nit_exit(1);}
   variable22 =  variable7 /*nodearraylist7*/;
   variable23 = TAG_Bool(( variable22 /*listnode7*/==NIT_NULL) || VAL_ISA( variable22 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction70___action, 3870); nit_exit(1);}
-  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable22 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable22 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable22 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 3875); nit_exit(1);}
+  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable22 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable22 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable22 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable22 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable22 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable23)) { /*if*/
-    variable23 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode8*/) /*Array::is_empty*/;
+    variable23 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable23)) { /*if*/
       variable14 =  variable22 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode8*/,  variable22 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode8*/,  variable22 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable23 =  variable6 /*nodearraylist8*/;
   variable24 = TAG_Bool(( variable23 /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable23 /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction70___action, 3879); nit_exit(1);}
+  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 3884); nit_exit(1);}
   variable24 =  variable4 /*nodearraylist10*/;
   variable25 = TAG_Bool(( variable24 /*listnode11*/==NIT_NULL) || VAL_ISA( variable24 /*listnode11*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction70___action, 3881); nit_exit(1);}
-  variable25 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable23 /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable23 /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable23 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable23 /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable23 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable23 /*ppropdefnode10*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction70___action, LOCATE_parser, 3886); nit_exit(1);}
+  variable25 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable23 /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable23 /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable23 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable23 /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable23 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable23 /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable25)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable16 /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable16 /*listnode12*/,  variable23 /*ppropdefnode10*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable16 /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable16 /*listnode12*/,  variable23 /*ppropdefnode10*/) /*AbstractArray::add*/;
   }
-  variable25 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable24 /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable24 /*listnode11*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable24 /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable24 /*listnode11*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable25 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable24 /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable24 /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable24 /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable24 /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable24 /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable24 /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable25)) { /*if*/
-    variable25 = ((array___AbstractArray___is_empty_t)CALL( variable16 /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable16 /*listnode12*/) /*Array::is_empty*/;
+    variable25 = ((array___AbstractArray___is_empty_t)CALL( variable16 /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable16 /*listnode12*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable25)) { /*if*/
       variable16 =  variable24 /*listnode11*/ /*listnode12=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable16 /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable16 /*listnode12*/,  variable24 /*listnode11*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable16 /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable16 /*listnode12*/,  variable24 /*listnode11*/) /*IndexedCollection::append*/;
     }
   }
   variable26 = NEW_parser_prod___AClassdef___init_aclassdef( variable17 /*pdocnode2*/,  variable18 /*tkwredefnode3*/,  variable19 /*pvisibilitynode4*/,  variable20 /*pclasskindnode5*/,  variable21 /*tclassidnode6*/,  variable14 /*listnode8*/,  variable15 /*listnode9*/,  variable16 /*listnode12*/); /*new AClassdef*/
@@ -7965,7 +7978,7 @@ void parser___ReduceAction70___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction70___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction70___init, 3905};
+  struct trace_t trace = {NULL, LOCATE_parser, 3910, LOCATE_parser___ReduceAction70___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction70].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction70].i] = 1;
@@ -7973,7 +7986,7 @@ void parser___ReduceAction70___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction71___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction71___action, 3909};
+  struct trace_t trace = {NULL, LOCATE_parser, 3914, LOCATE_parser___ReduceAction71___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -8020,42 +8033,42 @@ void parser___ReduceAction71___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable12 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable11 = variable12;
-  variable13 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable13 = NEW_array___Array___init(); /*new Array[E]*/
   variable12 = variable13;
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
-  variable15 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable15 = NEW_array___Array___init(); /*new Array[E]*/
   variable14 = variable15;
   variable15 =  variable11 /*nodearraylist1*/;
   variable16 = TAG_Bool(( variable15 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable15 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction71___action, 3926); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction71___action, LOCATE_parser, 3931); nit_exit(1);}
   variable16 =  variable10 /*nodearraylist2*/;
   variable17 = TAG_Bool(( variable16 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable16 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction71___action, 3928); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction71___action, LOCATE_parser, 3933); nit_exit(1);}
   variable17 =  variable9 /*nodearraylist3*/;
   variable18 = TAG_Bool(( variable17 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable17 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction71___action, 3930); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction71___action, LOCATE_parser, 3935); nit_exit(1);}
   variable18 =  variable7 /*nodearraylist5*/;
   variable19 = TAG_Bool(( variable18 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable18 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction71___action, 3932); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction71___action, LOCATE_parser, 3937); nit_exit(1);}
   variable19 =  variable6 /*nodearraylist6*/;
   variable20 = TAG_Bool(( variable19 /*listnode8*/==NIT_NULL) || VAL_ISA( variable19 /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction71___action, 3934); nit_exit(1);}
-  variable20 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable19 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable19 /*listnode8*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable19 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable19 /*listnode8*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction71___action, LOCATE_parser, 3939); nit_exit(1);}
+  variable20 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable19 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable19 /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable19 /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable19 /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable19 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable19 /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable20)) { /*if*/
-    variable20 = ((array___AbstractArray___is_empty_t)CALL( variable13 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable13 /*listnode9*/) /*Array::is_empty*/;
+    variable20 = ((array___AbstractArray___is_empty_t)CALL( variable13 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable13 /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable20)) { /*if*/
       variable13 =  variable19 /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable13 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable13 /*listnode9*/,  variable19 /*listnode8*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable13 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable13 /*listnode9*/,  variable19 /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable20 =  variable5 /*nodearraylist7*/;
   variable21 = TAG_Bool(( variable20 /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable20 /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction71___action, 3943); nit_exit(1);}
-  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable20 /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable20 /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable20 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable20 /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable20 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable20 /*ppropdefnode10*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction71___action, LOCATE_parser, 3948); nit_exit(1);}
+  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable20 /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable20 /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable20 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable20 /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable20 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable20 /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable21)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable14 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable14 /*listnode11*/,  variable20 /*ppropdefnode10*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable14 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable14 /*listnode11*/,  variable20 /*ppropdefnode10*/) /*AbstractArray::add*/;
   }
   variable22 = NEW_parser_prod___AClassdef___init_aclassdef( variable15 /*pdocnode2*/,  NIT_NULL /*null*/,  variable16 /*pvisibilitynode4*/,  variable17 /*pclasskindnode5*/,  variable18 /*tclassidnode6*/,  variable12 /*listnode7*/,  variable13 /*listnode9*/,  variable14 /*listnode11*/); /*new AClassdef*/
   variable21 = variable22;
@@ -8066,7 +8079,7 @@ void parser___ReduceAction71___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction71___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction71___init, 3960};
+  struct trace_t trace = {NULL, LOCATE_parser, 3965, LOCATE_parser___ReduceAction71___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction71].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction71].i] = 1;
@@ -8074,7 +8087,7 @@ void parser___ReduceAction71___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction72___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction72___action, 3964};
+  struct trace_t trace = {NULL, LOCATE_parser, 3969, LOCATE_parser___ReduceAction72___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -8125,53 +8138,53 @@ void parser___ReduceAction72___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable13 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable12 = variable13;
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
-  variable15 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable15 = NEW_array___Array___init(); /*new Array[E]*/
   variable14 = variable15;
-  variable16 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable16 = NEW_array___Array___init(); /*new Array[E]*/
   variable15 = variable16;
   variable16 =  variable12 /*nodearraylist1*/;
   variable17 = TAG_Bool(( variable16 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable16 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction72___action, 3982); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction72___action, LOCATE_parser, 3987); nit_exit(1);}
   variable17 =  variable11 /*nodearraylist2*/;
   variable18 = TAG_Bool(( variable17 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable17 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction72___action, 3984); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction72___action, LOCATE_parser, 3989); nit_exit(1);}
   variable18 =  variable10 /*nodearraylist3*/;
   variable19 = TAG_Bool(( variable18 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable18 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction72___action, 3986); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction72___action, LOCATE_parser, 3991); nit_exit(1);}
   variable19 =  variable8 /*nodearraylist5*/;
   variable20 = TAG_Bool(( variable19 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable19 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction72___action, 3988); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction72___action, LOCATE_parser, 3993); nit_exit(1);}
   variable20 =  variable7 /*nodearraylist6*/;
   variable21 = TAG_Bool(( variable20 /*listnode8*/==NIT_NULL) || VAL_ISA( variable20 /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction72___action, 3990); nit_exit(1);}
-  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable20 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable20 /*listnode8*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable20 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable20 /*listnode8*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction72___action, LOCATE_parser, 3995); nit_exit(1);}
+  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable20 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable20 /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable20 /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable20 /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable20 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable20 /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable21)) { /*if*/
-    variable21 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode9*/) /*Array::is_empty*/;
+    variable21 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable21)) { /*if*/
       variable14 =  variable20 /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode9*/,  variable20 /*listnode8*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode9*/,  variable20 /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable21 =  variable6 /*nodearraylist7*/;
   variable22 = TAG_Bool(( variable21 /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable21 /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction72___action, 3999); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction72___action, LOCATE_parser, 4004); nit_exit(1);}
   variable22 =  variable4 /*nodearraylist9*/;
   variable23 = TAG_Bool(( variable22 /*listnode11*/==NIT_NULL) || VAL_ISA( variable22 /*listnode11*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction72___action, 4001); nit_exit(1);}
-  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable21 /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable21 /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable21 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable21 /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable21 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable21 /*ppropdefnode10*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction72___action, LOCATE_parser, 4006); nit_exit(1);}
+  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable21 /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable21 /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable21 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable21 /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable21 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable21 /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable23)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable15 /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable15 /*listnode12*/,  variable21 /*ppropdefnode10*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable15 /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable15 /*listnode12*/,  variable21 /*ppropdefnode10*/) /*AbstractArray::add*/;
   }
-  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable22 /*listnode11*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable22 /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable22 /*listnode11*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable22 /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable22 /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable22 /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable22 /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable22 /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable23)) { /*if*/
-    variable23 = ((array___AbstractArray___is_empty_t)CALL( variable15 /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable15 /*listnode12*/) /*Array::is_empty*/;
+    variable23 = ((array___AbstractArray___is_empty_t)CALL( variable15 /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable15 /*listnode12*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable23)) { /*if*/
       variable15 =  variable22 /*listnode11*/ /*listnode12=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable15 /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable15 /*listnode12*/,  variable22 /*listnode11*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable15 /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable15 /*listnode12*/,  variable22 /*listnode11*/) /*IndexedCollection::append*/;
     }
   }
   variable24 = NEW_parser_prod___AClassdef___init_aclassdef( variable16 /*pdocnode2*/,  NIT_NULL /*null*/,  variable17 /*pvisibilitynode4*/,  variable18 /*pclasskindnode5*/,  variable19 /*tclassidnode6*/,  variable13 /*listnode7*/,  variable14 /*listnode9*/,  variable15 /*listnode12*/); /*new AClassdef*/
@@ -8183,7 +8196,7 @@ void parser___ReduceAction72___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction72___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction72___init, 4025};
+  struct trace_t trace = {NULL, LOCATE_parser, 4030, LOCATE_parser___ReduceAction72___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction72].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction72].i] = 1;
@@ -8191,7 +8204,7 @@ void parser___ReduceAction72___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction73___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction73___action, 4029};
+  struct trace_t trace = {NULL, LOCATE_parser, 4034, LOCATE_parser___ReduceAction73___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -8242,45 +8255,45 @@ void parser___ReduceAction73___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable13 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable12 = variable13;
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
-  variable15 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable15 = NEW_array___Array___init(); /*new Array[E]*/
   variable14 = variable15;
-  variable16 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable16 = NEW_array___Array___init(); /*new Array[E]*/
   variable15 = variable16;
   variable16 =  variable12 /*nodearraylist1*/;
   variable17 = TAG_Bool(( variable16 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable16 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction73___action, 4047); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction73___action, LOCATE_parser, 4052); nit_exit(1);}
   variable17 =  variable11 /*nodearraylist2*/;
   variable18 = TAG_Bool(( variable17 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable17 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction73___action, 4049); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction73___action, LOCATE_parser, 4054); nit_exit(1);}
   variable18 =  variable10 /*nodearraylist3*/;
   variable19 = TAG_Bool(( variable18 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable18 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction73___action, 4051); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction73___action, LOCATE_parser, 4056); nit_exit(1);}
   variable19 =  variable9 /*nodearraylist4*/;
   variable20 = TAG_Bool(( variable19 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable19 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction73___action, 4053); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction73___action, LOCATE_parser, 4058); nit_exit(1);}
   variable20 =  variable7 /*nodearraylist6*/;
   variable21 = TAG_Bool(( variable20 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable20 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction73___action, 4055); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction73___action, LOCATE_parser, 4060); nit_exit(1);}
   variable21 =  variable6 /*nodearraylist7*/;
   variable22 = TAG_Bool(( variable21 /*listnode8*/==NIT_NULL) || VAL_ISA( variable21 /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction73___action, 4057); nit_exit(1);}
-  variable22 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable21 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable21 /*listnode8*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable21 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable21 /*listnode8*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction73___action, LOCATE_parser, 4062); nit_exit(1);}
+  variable22 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable21 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable21 /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable21 /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable21 /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable21 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable21 /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable22)) { /*if*/
-    variable22 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode9*/) /*Array::is_empty*/;
+    variable22 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable22)) { /*if*/
       variable14 =  variable21 /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode9*/,  variable21 /*listnode8*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode9*/,  variable21 /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable22 =  variable5 /*nodearraylist8*/;
   variable23 = TAG_Bool(( variable22 /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable22 /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction73___action, 4066); nit_exit(1);}
-  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable22 /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable22 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable22 /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable22 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable22 /*ppropdefnode10*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction73___action, LOCATE_parser, 4071); nit_exit(1);}
+  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable22 /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable22 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable22 /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable22 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable22 /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable23)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable15 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable15 /*listnode11*/,  variable22 /*ppropdefnode10*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable15 /*listnode11*/,COLOR_abstract_collection___SimpleCollection___add))( variable15 /*listnode11*/,  variable22 /*ppropdefnode10*/) /*AbstractArray::add*/;
   }
   variable24 = NEW_parser_prod___AClassdef___init_aclassdef( variable16 /*pdocnode2*/,  variable17 /*tkwredefnode3*/,  variable18 /*pvisibilitynode4*/,  variable19 /*pclasskindnode5*/,  variable20 /*tclassidnode6*/,  variable13 /*listnode7*/,  variable14 /*listnode9*/,  variable15 /*listnode11*/); /*new AClassdef*/
   variable23 = variable24;
@@ -8291,7 +8304,7 @@ void parser___ReduceAction73___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction73___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction73___init, 4083};
+  struct trace_t trace = {NULL, LOCATE_parser, 4088, LOCATE_parser___ReduceAction73___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction73].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction73].i] = 1;
@@ -8299,7 +8312,7 @@ void parser___ReduceAction73___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction74___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction74___action, 4087};
+  struct trace_t trace = {NULL, LOCATE_parser, 4092, LOCATE_parser___ReduceAction74___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -8354,56 +8367,56 @@ void parser___ReduceAction74___action(val_t  self, val_t  param0) {
   variable12 = variable13;
   variable14 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable13 = variable14;
-  variable15 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable15 = NEW_array___Array___init(); /*new Array[E]*/
   variable14 = variable15;
-  variable16 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable16 = NEW_array___Array___init(); /*new Array[E]*/
   variable15 = variable16;
-  variable17 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable17 = NEW_array___Array___init(); /*new Array[E]*/
   variable16 = variable17;
   variable17 =  variable13 /*nodearraylist1*/;
   variable18 = TAG_Bool(( variable17 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable17 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction74___action, 4106); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4111); nit_exit(1);}
   variable18 =  variable12 /*nodearraylist2*/;
   variable19 = TAG_Bool(( variable18 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable18 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction74___action, 4108); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4113); nit_exit(1);}
   variable19 =  variable11 /*nodearraylist3*/;
   variable20 = TAG_Bool(( variable19 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable19 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction74___action, 4110); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4115); nit_exit(1);}
   variable20 =  variable10 /*nodearraylist4*/;
   variable21 = TAG_Bool(( variable20 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable20 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction74___action, 4112); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4117); nit_exit(1);}
   variable21 =  variable8 /*nodearraylist6*/;
   variable22 = TAG_Bool(( variable21 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable21 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction74___action, 4114); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4119); nit_exit(1);}
   variable22 =  variable7 /*nodearraylist7*/;
   variable23 = TAG_Bool(( variable22 /*listnode8*/==NIT_NULL) || VAL_ISA( variable22 /*listnode8*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction74___action, 4116); nit_exit(1);}
-  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable22 /*listnode8*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable22 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable22 /*listnode8*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4121); nit_exit(1);}
+  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*listnode8*/ ==  NIT_NULL /*null*/) || (( variable22 /*listnode8*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable22 /*listnode8*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable22 /*listnode8*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable22 /*listnode8*/,COLOR_kernel___Object_____eqeq))( variable22 /*listnode8*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable23)) { /*if*/
-    variable23 = ((array___AbstractArray___is_empty_t)CALL( variable15 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable15 /*listnode9*/) /*Array::is_empty*/;
+    variable23 = ((array___AbstractArray___is_empty_t)CALL( variable15 /*listnode9*/,COLOR_abstract_collection___Collection___is_empty))( variable15 /*listnode9*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable23)) { /*if*/
       variable15 =  variable22 /*listnode8*/ /*listnode9=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable15 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable15 /*listnode9*/,  variable22 /*listnode8*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable15 /*listnode9*/,COLOR_abstract_collection___IndexedCollection___append))( variable15 /*listnode9*/,  variable22 /*listnode8*/) /*IndexedCollection::append*/;
     }
   }
   variable23 =  variable6 /*nodearraylist8*/;
   variable24 = TAG_Bool(( variable23 /*ppropdefnode10*/==NIT_NULL) || VAL_ISA( variable23 /*ppropdefnode10*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction74___action, 4125); nit_exit(1);}
+  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4130); nit_exit(1);}
   variable24 =  variable4 /*nodearraylist10*/;
   variable25 = TAG_Bool(( variable24 /*listnode11*/==NIT_NULL) || VAL_ISA( variable24 /*listnode11*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction74___action, 4127); nit_exit(1);}
-  variable25 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable23 /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable23 /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable23 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable23 /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable23 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable23 /*ppropdefnode10*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction74___action, LOCATE_parser, 4132); nit_exit(1);}
+  variable25 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable23 /*ppropdefnode10*/ ==  NIT_NULL /*null*/) || (( variable23 /*ppropdefnode10*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable23 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable23 /*ppropdefnode10*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable23 /*ppropdefnode10*/,COLOR_kernel___Object_____eqeq))( variable23 /*ppropdefnode10*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable25)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable16 /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable16 /*listnode12*/,  variable23 /*ppropdefnode10*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable16 /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable16 /*listnode12*/,  variable23 /*ppropdefnode10*/) /*AbstractArray::add*/;
   }
-  variable25 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable24 /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable24 /*listnode11*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable24 /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable24 /*listnode11*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable25 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable24 /*listnode11*/ ==  NIT_NULL /*null*/) || (( variable24 /*listnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable24 /*listnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable24 /*listnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable24 /*listnode11*/,COLOR_kernel___Object_____eqeq))( variable24 /*listnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable25)) { /*if*/
-    variable25 = ((array___AbstractArray___is_empty_t)CALL( variable16 /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable16 /*listnode12*/) /*Array::is_empty*/;
+    variable25 = ((array___AbstractArray___is_empty_t)CALL( variable16 /*listnode12*/,COLOR_abstract_collection___Collection___is_empty))( variable16 /*listnode12*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable25)) { /*if*/
       variable16 =  variable24 /*listnode11*/ /*listnode12=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable16 /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable16 /*listnode12*/,  variable24 /*listnode11*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable16 /*listnode12*/,COLOR_abstract_collection___IndexedCollection___append))( variable16 /*listnode12*/,  variable24 /*listnode11*/) /*IndexedCollection::append*/;
     }
   }
   variable26 = NEW_parser_prod___AClassdef___init_aclassdef( variable17 /*pdocnode2*/,  variable18 /*tkwredefnode3*/,  variable19 /*pvisibilitynode4*/,  variable20 /*pclasskindnode5*/,  variable21 /*tclassidnode6*/,  variable14 /*listnode7*/,  variable15 /*listnode9*/,  variable16 /*listnode12*/); /*new AClassdef*/
@@ -8415,7 +8428,7 @@ void parser___ReduceAction74___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction74___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction74___init, 4151};
+  struct trace_t trace = {NULL, LOCATE_parser, 4156, LOCATE_parser___ReduceAction74___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction74].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction74].i] = 1;
@@ -8423,7 +8436,7 @@ void parser___ReduceAction74___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction75___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction75___action, 4155};
+  struct trace_t trace = {NULL, LOCATE_parser, 4160, LOCATE_parser___ReduceAction75___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -8474,54 +8487,54 @@ void parser___ReduceAction75___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable13 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable12 = variable13;
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
-  variable15 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable15 = NEW_array___Array___init(); /*new Array[E]*/
   variable14 = variable15;
-  variable16 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable16 = NEW_array___Array___init(); /*new Array[E]*/
   variable15 = variable16;
   variable16 =  variable12 /*nodearraylist1*/;
   variable17 = TAG_Bool(( variable16 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable16 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction75___action, 4173); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction75___action, LOCATE_parser, 4178); nit_exit(1);}
   variable17 =  variable11 /*nodearraylist2*/;
   variable18 = TAG_Bool(( variable17 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable17 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction75___action, 4175); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction75___action, LOCATE_parser, 4180); nit_exit(1);}
   variable18 =  variable10 /*nodearraylist3*/;
   variable19 = TAG_Bool(( variable18 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable18 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction75___action, 4177); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction75___action, LOCATE_parser, 4182); nit_exit(1);}
   variable19 =  variable8 /*nodearraylist5*/;
   variable20 = TAG_Bool(( variable19 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable19 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction75___action, 4179); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction75___action, LOCATE_parser, 4184); nit_exit(1);}
   variable20 =  variable7 /*nodearraylist6*/;
   variable21 = TAG_Bool(( variable20 /*listnode7*/==NIT_NULL) || VAL_ISA( variable20 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction75___action, 4181); nit_exit(1);}
-  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable20 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable20 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable20 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable20 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction75___action, LOCATE_parser, 4186); nit_exit(1);}
+  variable21 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable20 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable20 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable20 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable20 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable20 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable20 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable21)) { /*if*/
-    variable21 = ((array___AbstractArray___is_empty_t)CALL( variable13 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable13 /*listnode8*/) /*Array::is_empty*/;
+    variable21 = ((array___AbstractArray___is_empty_t)CALL( variable13 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable13 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable21)) { /*if*/
       variable13 =  variable20 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable13 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable13 /*listnode8*/,  variable20 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable13 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable13 /*listnode8*/,  variable20 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable21 =  variable6 /*nodearraylist7*/;
   variable22 = TAG_Bool(( variable21 /*listnode9*/==NIT_NULL) || VAL_ISA( variable21 /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction75___action, 4190); nit_exit(1);}
-  variable22 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable21 /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable21 /*listnode9*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable21 /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable21 /*listnode9*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction75___action, LOCATE_parser, 4195); nit_exit(1);}
+  variable22 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable21 /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable21 /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable21 /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable21 /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable21 /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable21 /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable22)) { /*if*/
-    variable22 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode10*/) /*Array::is_empty*/;
+    variable22 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable22)) { /*if*/
       variable14 =  variable21 /*listnode9*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode10*/,  variable21 /*listnode9*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode10*/,  variable21 /*listnode9*/) /*IndexedCollection::append*/;
     }
   }
   variable22 =  variable5 /*nodearraylist8*/;
   variable23 = TAG_Bool(( variable22 /*ppropdefnode11*/==NIT_NULL) || VAL_ISA( variable22 /*ppropdefnode11*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction75___action, 4199); nit_exit(1);}
-  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable22 /*ppropdefnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable22 /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable22 /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable22 /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))( variable22 /*ppropdefnode11*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction75___action, LOCATE_parser, 4204); nit_exit(1);}
+  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable22 /*ppropdefnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable22 /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable22 /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable22 /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))( variable22 /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable23)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable15 /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable15 /*listnode12*/,  variable22 /*ppropdefnode11*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable15 /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable15 /*listnode12*/,  variable22 /*ppropdefnode11*/) /*AbstractArray::add*/;
   }
   variable24 = NEW_parser_prod___AClassdef___init_aclassdef( variable16 /*pdocnode2*/,  NIT_NULL /*null*/,  variable17 /*pvisibilitynode4*/,  variable18 /*pclasskindnode5*/,  variable19 /*tclassidnode6*/,  variable13 /*listnode8*/,  variable14 /*listnode10*/,  variable15 /*listnode12*/); /*new AClassdef*/
   variable23 = variable24;
@@ -8532,7 +8545,7 @@ void parser___ReduceAction75___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction75___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction75___init, 4216};
+  struct trace_t trace = {NULL, LOCATE_parser, 4221, LOCATE_parser___ReduceAction75___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction75].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction75].i] = 1;
@@ -8540,7 +8553,7 @@ void parser___ReduceAction75___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction76___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction76___action, 4220};
+  struct trace_t trace = {NULL, LOCATE_parser, 4225, LOCATE_parser___ReduceAction76___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -8595,65 +8608,65 @@ void parser___ReduceAction76___action(val_t  self, val_t  param0) {
   variable12 = variable13;
   variable14 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable13 = variable14;
-  variable15 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable15 = NEW_array___Array___init(); /*new Array[E]*/
   variable14 = variable15;
-  variable16 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable16 = NEW_array___Array___init(); /*new Array[E]*/
   variable15 = variable16;
-  variable17 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable17 = NEW_array___Array___init(); /*new Array[E]*/
   variable16 = variable17;
   variable17 =  variable13 /*nodearraylist1*/;
   variable18 = TAG_Bool(( variable17 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable17 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction76___action, 4239); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4244); nit_exit(1);}
   variable18 =  variable12 /*nodearraylist2*/;
   variable19 = TAG_Bool(( variable18 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable18 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction76___action, 4241); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4246); nit_exit(1);}
   variable19 =  variable11 /*nodearraylist3*/;
   variable20 = TAG_Bool(( variable19 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable19 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction76___action, 4243); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4248); nit_exit(1);}
   variable20 =  variable9 /*nodearraylist5*/;
   variable21 = TAG_Bool(( variable20 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable20 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction76___action, 4245); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4250); nit_exit(1);}
   variable21 =  variable8 /*nodearraylist6*/;
   variable22 = TAG_Bool(( variable21 /*listnode7*/==NIT_NULL) || VAL_ISA( variable21 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction76___action, 4247); nit_exit(1);}
-  variable22 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable21 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable21 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable21 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable21 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4252); nit_exit(1);}
+  variable22 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable21 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable21 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable21 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable21 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable21 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable21 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable22)) { /*if*/
-    variable22 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode8*/) /*Array::is_empty*/;
+    variable22 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable22)) { /*if*/
       variable14 =  variable21 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode8*/,  variable21 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode8*/,  variable21 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable22 =  variable7 /*nodearraylist7*/;
   variable23 = TAG_Bool(( variable22 /*listnode9*/==NIT_NULL) || VAL_ISA( variable22 /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction76___action, 4256); nit_exit(1);}
-  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable22 /*listnode9*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable22 /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable22 /*listnode9*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4261); nit_exit(1);}
+  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable22 /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable22 /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable22 /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable22 /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable22 /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable23)) { /*if*/
-    variable23 = ((array___AbstractArray___is_empty_t)CALL( variable15 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable15 /*listnode10*/) /*Array::is_empty*/;
+    variable23 = ((array___AbstractArray___is_empty_t)CALL( variable15 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable15 /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable23)) { /*if*/
       variable15 =  variable22 /*listnode9*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable15 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable15 /*listnode10*/,  variable22 /*listnode9*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable15 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable15 /*listnode10*/,  variable22 /*listnode9*/) /*IndexedCollection::append*/;
     }
   }
   variable23 =  variable6 /*nodearraylist8*/;
   variable24 = TAG_Bool(( variable23 /*ppropdefnode11*/==NIT_NULL) || VAL_ISA( variable23 /*ppropdefnode11*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction76___action, 4265); nit_exit(1);}
+  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4270); nit_exit(1);}
   variable24 =  variable4 /*nodearraylist10*/;
   variable25 = TAG_Bool(( variable24 /*listnode12*/==NIT_NULL) || VAL_ISA( variable24 /*listnode12*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction76___action, 4267); nit_exit(1);}
-  variable25 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable23 /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable23 /*ppropdefnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable23 /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable23 /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable23 /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))( variable23 /*ppropdefnode11*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction76___action, LOCATE_parser, 4272); nit_exit(1);}
+  variable25 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable23 /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable23 /*ppropdefnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable23 /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable23 /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable23 /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))( variable23 /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable25)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable16 /*listnode13*/,COLOR_abstract_collection___SimpleCollection___add))( variable16 /*listnode13*/,  variable23 /*ppropdefnode11*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable16 /*listnode13*/,COLOR_abstract_collection___SimpleCollection___add))( variable16 /*listnode13*/,  variable23 /*ppropdefnode11*/) /*AbstractArray::add*/;
   }
-  variable25 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable24 /*listnode12*/ ==  NIT_NULL /*null*/) || (( variable24 /*listnode12*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable24 /*listnode12*/,COLOR_kernel___Object_____eqeq))( variable24 /*listnode12*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable25 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable24 /*listnode12*/ ==  NIT_NULL /*null*/) || (( variable24 /*listnode12*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable24 /*listnode12*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable24 /*listnode12*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable24 /*listnode12*/,COLOR_kernel___Object_____eqeq))( variable24 /*listnode12*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable25)) { /*if*/
-    variable25 = ((array___AbstractArray___is_empty_t)CALL( variable16 /*listnode13*/,COLOR_abstract_collection___Collection___is_empty))( variable16 /*listnode13*/) /*Array::is_empty*/;
+    variable25 = ((array___AbstractArray___is_empty_t)CALL( variable16 /*listnode13*/,COLOR_abstract_collection___Collection___is_empty))( variable16 /*listnode13*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable25)) { /*if*/
       variable16 =  variable24 /*listnode12*/ /*listnode13=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable16 /*listnode13*/,COLOR_abstract_collection___IndexedCollection___append))( variable16 /*listnode13*/,  variable24 /*listnode12*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable16 /*listnode13*/,COLOR_abstract_collection___IndexedCollection___append))( variable16 /*listnode13*/,  variable24 /*listnode12*/) /*IndexedCollection::append*/;
     }
   }
   variable26 = NEW_parser_prod___AClassdef___init_aclassdef( variable17 /*pdocnode2*/,  NIT_NULL /*null*/,  variable18 /*pvisibilitynode4*/,  variable19 /*pclasskindnode5*/,  variable20 /*tclassidnode6*/,  variable14 /*listnode8*/,  variable15 /*listnode10*/,  variable16 /*listnode13*/); /*new AClassdef*/
@@ -8665,7 +8678,7 @@ void parser___ReduceAction76___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction76___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction76___init, 4291};
+  struct trace_t trace = {NULL, LOCATE_parser, 4296, LOCATE_parser___ReduceAction76___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction76].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction76].i] = 1;
@@ -8673,7 +8686,7 @@ void parser___ReduceAction76___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction77___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction77___action, 4295};
+  struct trace_t trace = {NULL, LOCATE_parser, 4300, LOCATE_parser___ReduceAction77___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -8728,57 +8741,57 @@ void parser___ReduceAction77___action(val_t  self, val_t  param0) {
   variable12 = variable13;
   variable14 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable13 = variable14;
-  variable15 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable15 = NEW_array___Array___init(); /*new Array[E]*/
   variable14 = variable15;
-  variable16 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable16 = NEW_array___Array___init(); /*new Array[E]*/
   variable15 = variable16;
-  variable17 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable17 = NEW_array___Array___init(); /*new Array[E]*/
   variable16 = variable17;
   variable17 =  variable13 /*nodearraylist1*/;
   variable18 = TAG_Bool(( variable17 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable17 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction77___action, 4314); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4319); nit_exit(1);}
   variable18 =  variable12 /*nodearraylist2*/;
   variable19 = TAG_Bool(( variable18 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable18 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction77___action, 4316); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4321); nit_exit(1);}
   variable19 =  variable11 /*nodearraylist3*/;
   variable20 = TAG_Bool(( variable19 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable19 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction77___action, 4318); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4323); nit_exit(1);}
   variable20 =  variable10 /*nodearraylist4*/;
   variable21 = TAG_Bool(( variable20 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable20 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction77___action, 4320); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4325); nit_exit(1);}
   variable21 =  variable8 /*nodearraylist6*/;
   variable22 = TAG_Bool(( variable21 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable21 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction77___action, 4322); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4327); nit_exit(1);}
   variable22 =  variable7 /*nodearraylist7*/;
   variable23 = TAG_Bool(( variable22 /*listnode7*/==NIT_NULL) || VAL_ISA( variable22 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction77___action, 4324); nit_exit(1);}
-  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable22 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable22 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable22 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4329); nit_exit(1);}
+  variable23 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable22 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable22 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable22 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable22 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable22 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable22 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable23)) { /*if*/
-    variable23 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode8*/) /*Array::is_empty*/;
+    variable23 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable23)) { /*if*/
       variable14 =  variable22 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode8*/,  variable22 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode8*/,  variable22 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable23 =  variable6 /*nodearraylist8*/;
   variable24 = TAG_Bool(( variable23 /*listnode9*/==NIT_NULL) || VAL_ISA( variable23 /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction77___action, 4333); nit_exit(1);}
-  variable24 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable23 /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable23 /*listnode9*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable23 /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable23 /*listnode9*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4338); nit_exit(1);}
+  variable24 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable23 /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable23 /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable23 /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable23 /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable23 /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable23 /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable24)) { /*if*/
-    variable24 = ((array___AbstractArray___is_empty_t)CALL( variable15 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable15 /*listnode10*/) /*Array::is_empty*/;
+    variable24 = ((array___AbstractArray___is_empty_t)CALL( variable15 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable15 /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable24)) { /*if*/
       variable15 =  variable23 /*listnode9*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable15 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable15 /*listnode10*/,  variable23 /*listnode9*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable15 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable15 /*listnode10*/,  variable23 /*listnode9*/) /*IndexedCollection::append*/;
     }
   }
   variable24 =  variable5 /*nodearraylist9*/;
   variable25 = TAG_Bool(( variable24 /*ppropdefnode11*/==NIT_NULL) || VAL_ISA( variable24 /*ppropdefnode11*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction77___action, 4342); nit_exit(1);}
-  variable25 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable24 /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable24 /*ppropdefnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable24 /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable24 /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable24 /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))( variable24 /*ppropdefnode11*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction77___action, LOCATE_parser, 4347); nit_exit(1);}
+  variable25 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable24 /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable24 /*ppropdefnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable24 /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable24 /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable24 /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))( variable24 /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable25)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable16 /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable16 /*listnode12*/,  variable24 /*ppropdefnode11*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable16 /*listnode12*/,COLOR_abstract_collection___SimpleCollection___add))( variable16 /*listnode12*/,  variable24 /*ppropdefnode11*/) /*AbstractArray::add*/;
   }
   variable26 = NEW_parser_prod___AClassdef___init_aclassdef( variable17 /*pdocnode2*/,  variable18 /*tkwredefnode3*/,  variable19 /*pvisibilitynode4*/,  variable20 /*pclasskindnode5*/,  variable21 /*tclassidnode6*/,  variable14 /*listnode8*/,  variable15 /*listnode10*/,  variable16 /*listnode12*/); /*new AClassdef*/
   variable25 = variable26;
@@ -8789,7 +8802,7 @@ void parser___ReduceAction77___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction77___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction77___init, 4359};
+  struct trace_t trace = {NULL, LOCATE_parser, 4364, LOCATE_parser___ReduceAction77___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction77].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction77].i] = 1;
@@ -8797,7 +8810,7 @@ void parser___ReduceAction77___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction78___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction78___action, 4363};
+  struct trace_t trace = {NULL, LOCATE_parser, 4368, LOCATE_parser___ReduceAction78___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -8856,68 +8869,68 @@ void parser___ReduceAction78___action(val_t  self, val_t  param0) {
   variable13 = variable14;
   variable15 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable14 = variable15;
-  variable16 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable16 = NEW_array___Array___init(); /*new Array[E]*/
   variable15 = variable16;
-  variable17 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable17 = NEW_array___Array___init(); /*new Array[E]*/
   variable16 = variable17;
-  variable18 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable18 = NEW_array___Array___init(); /*new Array[E]*/
   variable17 = variable18;
   variable18 =  variable14 /*nodearraylist1*/;
   variable19 = TAG_Bool(( variable18 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable18 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction78___action, 4383); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4388); nit_exit(1);}
   variable19 =  variable13 /*nodearraylist2*/;
   variable20 = TAG_Bool(( variable19 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable19 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction78___action, 4385); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4390); nit_exit(1);}
   variable20 =  variable12 /*nodearraylist3*/;
   variable21 = TAG_Bool(( variable20 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable20 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction78___action, 4387); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4392); nit_exit(1);}
   variable21 =  variable11 /*nodearraylist4*/;
   variable22 = TAG_Bool(( variable21 /*pclasskindnode5*/==NIT_NULL) || VAL_ISA( variable21 /*pclasskindnode5*/, COLOR_PClasskind, ID_PClasskind)) /*cast PClasskind*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction78___action, 4389); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4394); nit_exit(1);}
   variable22 =  variable9 /*nodearraylist6*/;
   variable23 = TAG_Bool(( variable22 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable22 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction78___action, 4391); nit_exit(1);}
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4396); nit_exit(1);}
   variable23 =  variable8 /*nodearraylist7*/;
   variable24 = TAG_Bool(( variable23 /*listnode7*/==NIT_NULL) || VAL_ISA( variable23 /*listnode7*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction78___action, 4393); nit_exit(1);}
-  variable24 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable23 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable23 /*listnode7*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable23 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable23 /*listnode7*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4398); nit_exit(1);}
+  variable24 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable23 /*listnode7*/ ==  NIT_NULL /*null*/) || (( variable23 /*listnode7*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable23 /*listnode7*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable23 /*listnode7*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable23 /*listnode7*/,COLOR_kernel___Object_____eqeq))( variable23 /*listnode7*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable24)) { /*if*/
-    variable24 = ((array___AbstractArray___is_empty_t)CALL( variable15 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable15 /*listnode8*/) /*Array::is_empty*/;
+    variable24 = ((array___AbstractArray___is_empty_t)CALL( variable15 /*listnode8*/,COLOR_abstract_collection___Collection___is_empty))( variable15 /*listnode8*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable24)) { /*if*/
       variable15 =  variable23 /*listnode7*/ /*listnode8=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable15 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable15 /*listnode8*/,  variable23 /*listnode7*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable15 /*listnode8*/,COLOR_abstract_collection___IndexedCollection___append))( variable15 /*listnode8*/,  variable23 /*listnode7*/) /*IndexedCollection::append*/;
     }
   }
   variable24 =  variable7 /*nodearraylist8*/;
   variable25 = TAG_Bool(( variable24 /*listnode9*/==NIT_NULL) || VAL_ISA( variable24 /*listnode9*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction78___action, 4402); nit_exit(1);}
-  variable25 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable24 /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable24 /*listnode9*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable24 /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable24 /*listnode9*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4407); nit_exit(1);}
+  variable25 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable24 /*listnode9*/ ==  NIT_NULL /*null*/) || (( variable24 /*listnode9*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable24 /*listnode9*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable24 /*listnode9*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable24 /*listnode9*/,COLOR_kernel___Object_____eqeq))( variable24 /*listnode9*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable25)) { /*if*/
-    variable25 = ((array___AbstractArray___is_empty_t)CALL( variable16 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable16 /*listnode10*/) /*Array::is_empty*/;
+    variable25 = ((array___AbstractArray___is_empty_t)CALL( variable16 /*listnode10*/,COLOR_abstract_collection___Collection___is_empty))( variable16 /*listnode10*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable25)) { /*if*/
       variable16 =  variable24 /*listnode9*/ /*listnode10=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable16 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable16 /*listnode10*/,  variable24 /*listnode9*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable16 /*listnode10*/,COLOR_abstract_collection___IndexedCollection___append))( variable16 /*listnode10*/,  variable24 /*listnode9*/) /*IndexedCollection::append*/;
     }
   }
   variable25 =  variable6 /*nodearraylist9*/;
   variable26 = TAG_Bool(( variable25 /*ppropdefnode11*/==NIT_NULL) || VAL_ISA( variable25 /*ppropdefnode11*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable26)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction78___action, 4411); nit_exit(1);}
+  if (!UNTAG_Bool(variable26)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4416); nit_exit(1);}
   variable26 =  variable4 /*nodearraylist11*/;
   variable27 = TAG_Bool(( variable26 /*listnode12*/==NIT_NULL) || VAL_ISA( variable26 /*listnode12*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable27)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction78___action, 4413); nit_exit(1);}
-  variable27 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable25 /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable25 /*ppropdefnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable25 /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable25 /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable25 /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))( variable25 /*ppropdefnode11*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable27)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction78___action, LOCATE_parser, 4418); nit_exit(1);}
+  variable27 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable25 /*ppropdefnode11*/ ==  NIT_NULL /*null*/) || (( variable25 /*ppropdefnode11*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable25 /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable25 /*ppropdefnode11*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable25 /*ppropdefnode11*/,COLOR_kernel___Object_____eqeq))( variable25 /*ppropdefnode11*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable27)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable17 /*listnode13*/,COLOR_abstract_collection___SimpleCollection___add))( variable17 /*listnode13*/,  variable25 /*ppropdefnode11*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable17 /*listnode13*/,COLOR_abstract_collection___SimpleCollection___add))( variable17 /*listnode13*/,  variable25 /*ppropdefnode11*/) /*AbstractArray::add*/;
   }
-  variable27 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable26 /*listnode12*/ ==  NIT_NULL /*null*/) || (( variable26 /*listnode12*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable26 /*listnode12*/,COLOR_kernel___Object_____eqeq))( variable26 /*listnode12*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable27 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable26 /*listnode12*/ ==  NIT_NULL /*null*/) || (( variable26 /*listnode12*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable26 /*listnode12*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable26 /*listnode12*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable26 /*listnode12*/,COLOR_kernel___Object_____eqeq))( variable26 /*listnode12*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable27)) { /*if*/
-    variable27 = ((array___AbstractArray___is_empty_t)CALL( variable17 /*listnode13*/,COLOR_abstract_collection___Collection___is_empty))( variable17 /*listnode13*/) /*Array::is_empty*/;
+    variable27 = ((array___AbstractArray___is_empty_t)CALL( variable17 /*listnode13*/,COLOR_abstract_collection___Collection___is_empty))( variable17 /*listnode13*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable27)) { /*if*/
       variable17 =  variable26 /*listnode12*/ /*listnode13=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable17 /*listnode13*/,COLOR_abstract_collection___IndexedCollection___append))( variable17 /*listnode13*/,  variable26 /*listnode12*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable17 /*listnode13*/,COLOR_abstract_collection___IndexedCollection___append))( variable17 /*listnode13*/,  variable26 /*listnode12*/) /*IndexedCollection::append*/;
     }
   }
   variable28 = NEW_parser_prod___AClassdef___init_aclassdef( variable18 /*pdocnode2*/,  variable19 /*tkwredefnode3*/,  variable20 /*pvisibilitynode4*/,  variable21 /*pclasskindnode5*/,  variable22 /*tclassidnode6*/,  variable15 /*listnode8*/,  variable16 /*listnode10*/,  variable17 /*listnode13*/); /*new AClassdef*/
@@ -8929,7 +8942,7 @@ void parser___ReduceAction78___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction78___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction78___init, 4437};
+  struct trace_t trace = {NULL, LOCATE_parser, 4442, LOCATE_parser___ReduceAction78___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction78].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction78].i] = 1;
@@ -8937,7 +8950,7 @@ void parser___ReduceAction78___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction79___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction79___action, 4441};
+  struct trace_t trace = {NULL, LOCATE_parser, 4446, LOCATE_parser___ReduceAction79___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -8951,7 +8964,7 @@ void parser___ReduceAction79___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwclassnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwclassnode2*/, COLOR_TKwclass, ID_TKwclass)) /*cast TKwclass*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction79___action, 4446); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction79___action, LOCATE_parser, 4451); nit_exit(1);}
   variable5 = NEW_parser_prod___AConcreteClasskind___init_aconcreteclasskind( variable3 /*tkwclassnode2*/); /*new AConcreteClasskind*/
   variable4 = variable5;
   variable1 =  variable4 /*pclasskindnode1*/ /*node_list=*/;
@@ -8961,7 +8974,7 @@ void parser___ReduceAction79___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction79___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction79___init, 4453};
+  struct trace_t trace = {NULL, LOCATE_parser, 4458, LOCATE_parser___ReduceAction79___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction79].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction79].i] = 1;
@@ -8969,7 +8982,7 @@ void parser___ReduceAction79___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction80___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction80___action, 4457};
+  struct trace_t trace = {NULL, LOCATE_parser, 4462, LOCATE_parser___ReduceAction80___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -8987,10 +9000,10 @@ void parser___ReduceAction80___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tkwabstractnode2*/==NIT_NULL) || VAL_ISA( variable4 /*tkwabstractnode2*/, COLOR_TKwabstract, ID_TKwabstract)) /*cast TKwabstract*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction80___action, 4463); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction80___action, LOCATE_parser, 4468); nit_exit(1);}
   variable5 =  variable2 /*nodearraylist2*/;
   variable6 = TAG_Bool(( variable5 /*tkwclassnode3*/==NIT_NULL) || VAL_ISA( variable5 /*tkwclassnode3*/, COLOR_TKwclass, ID_TKwclass)) /*cast TKwclass*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction80___action, 4465); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction80___action, LOCATE_parser, 4470); nit_exit(1);}
   variable7 = NEW_parser_prod___AAbstractClasskind___init_aabstractclasskind( variable4 /*tkwabstractnode2*/,  variable5 /*tkwclassnode3*/); /*new AAbstractClasskind*/
   variable6 = variable7;
   variable1 =  variable6 /*pclasskindnode1*/ /*node_list=*/;
@@ -9000,7 +9013,7 @@ void parser___ReduceAction80___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction80___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction80___init, 4473};
+  struct trace_t trace = {NULL, LOCATE_parser, 4478, LOCATE_parser___ReduceAction80___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction80].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction80].i] = 1;
@@ -9008,7 +9021,7 @@ void parser___ReduceAction80___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction81___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction81___action, 4477};
+  struct trace_t trace = {NULL, LOCATE_parser, 4482, LOCATE_parser___ReduceAction81___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9022,7 +9035,7 @@ void parser___ReduceAction81___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwinterfacenode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwinterfacenode2*/, COLOR_TKwinterface, ID_TKwinterface)) /*cast TKwinterface*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction81___action, 4482); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction81___action, LOCATE_parser, 4487); nit_exit(1);}
   variable5 = NEW_parser_prod___AInterfaceClasskind___init_ainterfaceclasskind( variable3 /*tkwinterfacenode2*/); /*new AInterfaceClasskind*/
   variable4 = variable5;
   variable1 =  variable4 /*pclasskindnode1*/ /*node_list=*/;
@@ -9032,7 +9045,7 @@ void parser___ReduceAction81___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction81___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction81___init, 4489};
+  struct trace_t trace = {NULL, LOCATE_parser, 4494, LOCATE_parser___ReduceAction81___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction81].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction81].i] = 1;
@@ -9040,7 +9053,7 @@ void parser___ReduceAction81___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction82___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction82___action, 4493};
+  struct trace_t trace = {NULL, LOCATE_parser, 4498, LOCATE_parser___ReduceAction82___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9054,7 +9067,7 @@ void parser___ReduceAction82___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwuniversalnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwuniversalnode2*/, COLOR_TKwuniversal, ID_TKwuniversal)) /*cast TKwuniversal*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction82___action, 4498); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction82___action, LOCATE_parser, 4503); nit_exit(1);}
   variable5 = NEW_parser_prod___AUniversalClasskind___init_auniversalclasskind( variable3 /*tkwuniversalnode2*/); /*new AUniversalClasskind*/
   variable4 = variable5;
   variable1 =  variable4 /*pclasskindnode1*/ /*node_list=*/;
@@ -9064,7 +9077,7 @@ void parser___ReduceAction82___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction82___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction82___init, 4505};
+  struct trace_t trace = {NULL, LOCATE_parser, 4510, LOCATE_parser___ReduceAction82___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction82].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction82].i] = 1;
@@ -9072,7 +9085,7 @@ void parser___ReduceAction82___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction83___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction83___action, 4509};
+  struct trace_t trace = {NULL, LOCATE_parser, 4514, LOCATE_parser___ReduceAction83___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9096,14 +9109,14 @@ void parser___ReduceAction83___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable4 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*pformaldefnode1*/==NIT_NULL) || VAL_ISA( variable8 /*pformaldefnode1*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction83___action, 4519); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable8 /*pformaldefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))( variable8 /*pformaldefnode1*/,  NIT_NULL /*null*/) /*PFormaldef::==*/)))))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction83___action, LOCATE_parser, 4524); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable8 /*pformaldefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))( variable8 /*pformaldefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode2*/,  variable8 /*pformaldefnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode2*/,  variable8 /*pformaldefnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable7 /*listnode2*/ /*node_list=*/;
   variable9 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(7)) /*Parser::go_to*/;
@@ -9112,7 +9125,7 @@ void parser___ReduceAction83___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction83___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction83___init, 4526};
+  struct trace_t trace = {NULL, LOCATE_parser, 4531, LOCATE_parser___ReduceAction83___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction83].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction83].i] = 1;
@@ -9120,7 +9133,7 @@ void parser___ReduceAction83___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction84___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction84___action, 4530};
+  struct trace_t trace = {NULL, LOCATE_parser, 4535, LOCATE_parser___ReduceAction84___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9148,25 +9161,25 @@ void parser___ReduceAction84___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable8 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable5 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*pformaldefnode1*/==NIT_NULL) || VAL_ISA( variable9 /*pformaldefnode1*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction84___action, 4541); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction84___action, LOCATE_parser, 4546); nit_exit(1);}
   variable10 =  variable4 /*nodearraylist4*/;
   variable11 = TAG_Bool(( variable10 /*listnode2*/==NIT_NULL) || VAL_ISA( variable10 /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction84___action, 4543); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable9 /*pformaldefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))( variable9 /*pformaldefnode1*/,  NIT_NULL /*null*/) /*PFormaldef::==*/)))))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction84___action, LOCATE_parser, 4548); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable9 /*pformaldefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))( variable9 /*pformaldefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode3*/,  variable9 /*pformaldefnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode3*/,  variable9 /*pformaldefnode1*/) /*AbstractArray::add*/;
   }
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode2*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode2*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode3*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable8 =  variable10 /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode3*/,  variable10 /*listnode2*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode3*/,  variable10 /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable1 =  variable8 /*listnode3*/ /*node_list=*/;
@@ -9176,7 +9189,7 @@ void parser___ReduceAction84___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction84___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction84___init, 4557};
+  struct trace_t trace = {NULL, LOCATE_parser, 4562, LOCATE_parser___ReduceAction84___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction84].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction84].i] = 1;
@@ -9184,7 +9197,7 @@ void parser___ReduceAction84___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction85___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction85___action, 4561};
+  struct trace_t trace = {NULL, LOCATE_parser, 4566, LOCATE_parser___ReduceAction85___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9203,7 +9216,7 @@ void parser___ReduceAction85___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable2 /*nodearraylist3*/;
   variable6 = TAG_Bool(( variable5 /*pformaldefnode1*/==NIT_NULL) || VAL_ISA( variable5 /*pformaldefnode1*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction85___action, 4568); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction85___action, LOCATE_parser, 4573); nit_exit(1);}
   variable1 =  variable5 /*pformaldefnode1*/ /*node_list=*/;
   variable6 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(8)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable6,  variable1 /*node_list*/) /*Parser::push*/;
@@ -9211,7 +9224,7 @@ void parser___ReduceAction85___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction85___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction85___init, 4572};
+  struct trace_t trace = {NULL, LOCATE_parser, 4577, LOCATE_parser___ReduceAction85___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction85].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction85].i] = 1;
@@ -9219,7 +9232,7 @@ void parser___ReduceAction85___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction86___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction86___action, 4576};
+  struct trace_t trace = {NULL, LOCATE_parser, 4581, LOCATE_parser___ReduceAction86___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9233,7 +9246,7 @@ void parser___ReduceAction86___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tclassidnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tclassidnode2*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction86___action, 4581); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction86___action, LOCATE_parser, 4586); nit_exit(1);}
   variable5 = NEW_parser_prod___AFormaldef___init_aformaldef( variable3 /*tclassidnode2*/,  NIT_NULL /*null*/); /*new AFormaldef*/
   variable4 = variable5;
   variable1 =  variable4 /*pformaldefnode1*/ /*node_list=*/;
@@ -9243,7 +9256,7 @@ void parser___ReduceAction86___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction86___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction86___init, 4589};
+  struct trace_t trace = {NULL, LOCATE_parser, 4594, LOCATE_parser___ReduceAction86___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction86].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction86].i] = 1;
@@ -9251,7 +9264,7 @@ void parser___ReduceAction86___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction87___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction87___action, 4593};
+  struct trace_t trace = {NULL, LOCATE_parser, 4598, LOCATE_parser___ReduceAction87___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9269,10 +9282,10 @@ void parser___ReduceAction87___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tclassidnode2*/==NIT_NULL) || VAL_ISA( variable4 /*tclassidnode2*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction87___action, 4599); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction87___action, LOCATE_parser, 4604); nit_exit(1);}
   variable5 =  variable2 /*nodearraylist2*/;
   variable6 = TAG_Bool(( variable5 /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable5 /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction87___action, 4601); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction87___action, LOCATE_parser, 4606); nit_exit(1);}
   variable7 = NEW_parser_prod___AFormaldef___init_aformaldef( variable4 /*tclassidnode2*/,  variable5 /*ptypenode3*/); /*new AFormaldef*/
   variable6 = variable7;
   variable1 =  variable6 /*pformaldefnode1*/ /*node_list=*/;
@@ -9282,7 +9295,7 @@ void parser___ReduceAction87___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction87___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction87___init, 4609};
+  struct trace_t trace = {NULL, LOCATE_parser, 4614, LOCATE_parser___ReduceAction87___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction87].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction87].i] = 1;
@@ -9290,7 +9303,7 @@ void parser___ReduceAction87___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction88___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction88___action, 4613};
+  struct trace_t trace = {NULL, LOCATE_parser, 4618, LOCATE_parser___ReduceAction88___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9314,10 +9327,10 @@ void parser___ReduceAction88___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable4 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*tkwspecialnode2*/==NIT_NULL) || VAL_ISA( variable6 /*tkwspecialnode2*/, COLOR_TKwspecial, ID_TKwspecial)) /*cast TKwspecial*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction88___action, 4621); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction88___action, LOCATE_parser, 4626); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable7 /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction88___action, 4623); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction88___action, LOCATE_parser, 4628); nit_exit(1);}
   variable9 = NEW_parser_prod___ASuperclass___init_asuperclass( variable6 /*tkwspecialnode2*/,  variable7 /*ptypenode3*/); /*new ASuperclass*/
   variable8 = variable9;
   variable1 =  variable8 /*psuperclassnode1*/ /*node_list=*/;
@@ -9327,7 +9340,7 @@ void parser___ReduceAction88___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction88___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction88___init, 4631};
+  struct trace_t trace = {NULL, LOCATE_parser, 4636, LOCATE_parser___ReduceAction88___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction88].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction88].i] = 1;
@@ -9335,7 +9348,7 @@ void parser___ReduceAction88___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction89___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction89___action, 4635};
+  struct trace_t trace = {NULL, LOCATE_parser, 4640, LOCATE_parser___ReduceAction89___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9351,7 +9364,7 @@ void parser___ReduceAction89___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*ppropdefnode1*/==NIT_NULL) || VAL_ISA( variable4 /*ppropdefnode1*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction89___action, 4641); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction89___action, LOCATE_parser, 4646); nit_exit(1);}
   variable1 =  variable4 /*ppropdefnode1*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(11)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable5,  variable1 /*node_list*/) /*Parser::push*/;
@@ -9359,7 +9372,7 @@ void parser___ReduceAction89___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction89___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction89___init, 4645};
+  struct trace_t trace = {NULL, LOCATE_parser, 4650, LOCATE_parser___ReduceAction89___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction89].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction89].i] = 1;
@@ -9367,7 +9380,7 @@ void parser___ReduceAction89___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction90___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction90___action, 4649};
+  struct trace_t trace = {NULL, LOCATE_parser, 4654, LOCATE_parser___ReduceAction90___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9403,26 +9416,26 @@ void parser___ReduceAction90___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable7 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction90___action, 4659); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction90___action, LOCATE_parser, 4664); nit_exit(1);}
   variable9 =  variable6 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable9 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction90___action, 4661); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction90___action, LOCATE_parser, 4666); nit_exit(1);}
   variable11 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable9 /*tkwreadablenode5*/); /*new AReadAble*/
   variable10 = variable11;
   variable11 =  variable5 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable11 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction90___action, 4667); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction90___action, LOCATE_parser, 4672); nit_exit(1);}
   variable13 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable11 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable12 = variable13;
   variable13 =  variable4 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable13 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction90___action, 4673); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction90___action, LOCATE_parser, 4678); nit_exit(1);}
   variable14 =  variable3 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable14 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction90___action, 4675); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction90___action, LOCATE_parser, 4680); nit_exit(1);}
   variable15 =  variable2 /*nodearraylist6*/;
   variable16 = TAG_Bool(( variable15 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable15 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction90___action, 4677); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction90___action, LOCATE_parser, 4682); nit_exit(1);}
   variable17 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable8 /*pdocnode2*/,  variable10 /*pablenode3*/,  variable12 /*pablenode6*/,  NIT_NULL /*null*/,  variable13 /*pvisibilitynode10*/,  variable14 /*tkwattrnode11*/,  variable15 /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable16 = variable17;
   variable1 =  variable16 /*ppropdefnode1*/ /*node_list=*/;
@@ -9432,7 +9445,7 @@ void parser___ReduceAction90___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction90___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction90___init, 4692};
+  struct trace_t trace = {NULL, LOCATE_parser, 4697, LOCATE_parser___ReduceAction90___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction90].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction90].i] = 1;
@@ -9440,7 +9453,7 @@ void parser___ReduceAction90___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction91___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction91___action, 4696};
+  struct trace_t trace = {NULL, LOCATE_parser, 4701, LOCATE_parser___ReduceAction91___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9480,29 +9493,29 @@ void parser___ReduceAction91___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable9 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction91___action, 4707); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction91___action, LOCATE_parser, 4712); nit_exit(1);}
   variable10 =  variable7 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable10 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction91___action, 4709); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction91___action, LOCATE_parser, 4714); nit_exit(1);}
   variable12 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable10 /*tkwreadablenode5*/); /*new AReadAble*/
   variable11 = variable12;
   variable12 =  variable6 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable12 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction91___action, 4715); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction91___action, LOCATE_parser, 4720); nit_exit(1);}
   variable13 =  variable5 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable13 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction91___action, 4717); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction91___action, LOCATE_parser, 4722); nit_exit(1);}
   variable15 = NEW_parser_prod___AWriteAble___init_awriteable( variable12 /*tkwredefnode7*/,  variable13 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable14 = variable15;
   variable15 =  variable4 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable15 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction91___action, 4723); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction91___action, LOCATE_parser, 4728); nit_exit(1);}
   variable16 =  variable3 /*nodearraylist6*/;
   variable17 = TAG_Bool(( variable16 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable16 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction91___action, 4725); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction91___action, LOCATE_parser, 4730); nit_exit(1);}
   variable17 =  variable2 /*nodearraylist7*/;
   variable18 = TAG_Bool(( variable17 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable17 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction91___action, 4727); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction91___action, LOCATE_parser, 4732); nit_exit(1);}
   variable19 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable9 /*pdocnode2*/,  variable11 /*pablenode3*/,  variable14 /*pablenode6*/,  NIT_NULL /*null*/,  variable15 /*pvisibilitynode10*/,  variable16 /*tkwattrnode11*/,  variable17 /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable18 = variable19;
   variable1 =  variable18 /*ppropdefnode1*/ /*node_list=*/;
@@ -9512,7 +9525,7 @@ void parser___ReduceAction91___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction91___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction91___init, 4742};
+  struct trace_t trace = {NULL, LOCATE_parser, 4747, LOCATE_parser___ReduceAction91___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction91].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction91].i] = 1;
@@ -9520,7 +9533,7 @@ void parser___ReduceAction91___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction92___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction92___action, 4746};
+  struct trace_t trace = {NULL, LOCATE_parser, 4751, LOCATE_parser___ReduceAction92___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9551,21 +9564,21 @@ void parser___ReduceAction92___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable7 =  variable6 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable7 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction92___action, 4755); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction92___action, LOCATE_parser, 4760); nit_exit(1);}
   variable8 =  variable5 /*nodearraylist2*/;
   variable9 = TAG_Bool(( variable8 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable8 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction92___action, 4757); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction92___action, LOCATE_parser, 4762); nit_exit(1);}
   variable10 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable8 /*tkwreadablenode5*/); /*new AReadAble*/
   variable9 = variable10;
   variable10 =  variable4 /*nodearraylist3*/;
   variable11 = TAG_Bool(( variable10 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable10 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction92___action, 4763); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction92___action, LOCATE_parser, 4768); nit_exit(1);}
   variable11 =  variable3 /*nodearraylist4*/;
   variable12 = TAG_Bool(( variable11 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable11 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction92___action, 4765); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction92___action, LOCATE_parser, 4770); nit_exit(1);}
   variable12 =  variable2 /*nodearraylist5*/;
   variable13 = TAG_Bool(( variable12 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable12 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction92___action, 4767); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction92___action, LOCATE_parser, 4772); nit_exit(1);}
   variable14 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable7 /*pdocnode2*/,  variable9 /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable10 /*pvisibilitynode8*/,  variable11 /*tkwattrnode9*/,  variable12 /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable13 = variable14;
   variable1 =  variable13 /*ppropdefnode1*/ /*node_list=*/;
@@ -9575,7 +9588,7 @@ void parser___ReduceAction92___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction92___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction92___init, 4782};
+  struct trace_t trace = {NULL, LOCATE_parser, 4787, LOCATE_parser___ReduceAction92___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction92].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction92].i] = 1;
@@ -9583,7 +9596,7 @@ void parser___ReduceAction92___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction93___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction93___action, 4786};
+  struct trace_t trace = {NULL, LOCATE_parser, 4791, LOCATE_parser___ReduceAction93___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9623,29 +9636,29 @@ void parser___ReduceAction93___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable9 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction93___action, 4797); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction93___action, LOCATE_parser, 4802); nit_exit(1);}
   variable10 =  variable7 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable10 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction93___action, 4799); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction93___action, LOCATE_parser, 4804); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable11 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction93___action, 4801); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction93___action, LOCATE_parser, 4806); nit_exit(1);}
   variable13 = NEW_parser_prod___AReadAble___init_areadable( variable10 /*tkwredefnode4*/,  variable11 /*tkwreadablenode5*/); /*new AReadAble*/
   variable12 = variable13;
   variable13 =  variable5 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable13 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction93___action, 4807); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction93___action, LOCATE_parser, 4812); nit_exit(1);}
   variable15 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable13 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable14 = variable15;
   variable15 =  variable4 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable15 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction93___action, 4813); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction93___action, LOCATE_parser, 4818); nit_exit(1);}
   variable16 =  variable3 /*nodearraylist6*/;
   variable17 = TAG_Bool(( variable16 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable16 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction93___action, 4815); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction93___action, LOCATE_parser, 4820); nit_exit(1);}
   variable17 =  variable2 /*nodearraylist7*/;
   variable18 = TAG_Bool(( variable17 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable17 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction93___action, 4817); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction93___action, LOCATE_parser, 4822); nit_exit(1);}
   variable19 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable9 /*pdocnode2*/,  variable12 /*pablenode3*/,  variable14 /*pablenode6*/,  NIT_NULL /*null*/,  variable15 /*pvisibilitynode10*/,  variable16 /*tkwattrnode11*/,  variable17 /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable18 = variable19;
   variable1 =  variable18 /*ppropdefnode1*/ /*node_list=*/;
@@ -9655,7 +9668,7 @@ void parser___ReduceAction93___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction93___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction93___init, 4832};
+  struct trace_t trace = {NULL, LOCATE_parser, 4837, LOCATE_parser___ReduceAction93___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction93].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction93].i] = 1;
@@ -9663,7 +9676,7 @@ void parser___ReduceAction93___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction94___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction94___action, 4836};
+  struct trace_t trace = {NULL, LOCATE_parser, 4841, LOCATE_parser___ReduceAction94___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9707,32 +9720,32 @@ void parser___ReduceAction94___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction94___action, 4848); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction94___action, LOCATE_parser, 4853); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable11 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction94___action, 4850); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction94___action, LOCATE_parser, 4855); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable12 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction94___action, 4852); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction94___action, LOCATE_parser, 4857); nit_exit(1);}
   variable14 = NEW_parser_prod___AReadAble___init_areadable( variable11 /*tkwredefnode4*/,  variable12 /*tkwreadablenode5*/); /*new AReadAble*/
   variable13 = variable14;
   variable14 =  variable6 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable14 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction94___action, 4858); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction94___action, LOCATE_parser, 4863); nit_exit(1);}
   variable15 =  variable5 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable15 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction94___action, 4860); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction94___action, LOCATE_parser, 4865); nit_exit(1);}
   variable17 = NEW_parser_prod___AWriteAble___init_awriteable( variable14 /*tkwredefnode7*/,  variable15 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable16 = variable17;
   variable17 =  variable4 /*nodearraylist6*/;
   variable18 = TAG_Bool(( variable17 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable17 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction94___action, 4866); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction94___action, LOCATE_parser, 4871); nit_exit(1);}
   variable18 =  variable3 /*nodearraylist7*/;
   variable19 = TAG_Bool(( variable18 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable18 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction94___action, 4868); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction94___action, LOCATE_parser, 4873); nit_exit(1);}
   variable19 =  variable2 /*nodearraylist8*/;
   variable20 = TAG_Bool(( variable19 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable19 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction94___action, 4870); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction94___action, LOCATE_parser, 4875); nit_exit(1);}
   variable21 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable10 /*pdocnode2*/,  variable13 /*pablenode3*/,  variable16 /*pablenode6*/,  NIT_NULL /*null*/,  variable17 /*pvisibilitynode10*/,  variable18 /*tkwattrnode11*/,  variable19 /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable20 = variable21;
   variable1 =  variable20 /*ppropdefnode1*/ /*node_list=*/;
@@ -9742,7 +9755,7 @@ void parser___ReduceAction94___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction94___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction94___init, 4885};
+  struct trace_t trace = {NULL, LOCATE_parser, 4890, LOCATE_parser___ReduceAction94___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction94].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction94].i] = 1;
@@ -9750,7 +9763,7 @@ void parser___ReduceAction94___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction95___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction95___action, 4889};
+  struct trace_t trace = {NULL, LOCATE_parser, 4894, LOCATE_parser___ReduceAction95___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9785,24 +9798,24 @@ void parser___ReduceAction95___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable7 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction95___action, 4899); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction95___action, LOCATE_parser, 4904); nit_exit(1);}
   variable9 =  variable6 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable9 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction95___action, 4901); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction95___action, LOCATE_parser, 4906); nit_exit(1);}
   variable10 =  variable5 /*nodearraylist3*/;
   variable11 = TAG_Bool(( variable10 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable10 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction95___action, 4903); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction95___action, LOCATE_parser, 4908); nit_exit(1);}
   variable12 = NEW_parser_prod___AReadAble___init_areadable( variable9 /*tkwredefnode4*/,  variable10 /*tkwreadablenode5*/); /*new AReadAble*/
   variable11 = variable12;
   variable12 =  variable4 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable12 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction95___action, 4909); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction95___action, LOCATE_parser, 4914); nit_exit(1);}
   variable13 =  variable3 /*nodearraylist5*/;
   variable14 = TAG_Bool(( variable13 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable13 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction95___action, 4911); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction95___action, LOCATE_parser, 4916); nit_exit(1);}
   variable14 =  variable2 /*nodearraylist6*/;
   variable15 = TAG_Bool(( variable14 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable14 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction95___action, 4913); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction95___action, LOCATE_parser, 4918); nit_exit(1);}
   variable16 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable8 /*pdocnode2*/,  variable11 /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable12 /*pvisibilitynode8*/,  variable13 /*tkwattrnode9*/,  variable14 /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable15 = variable16;
   variable1 =  variable15 /*ppropdefnode1*/ /*node_list=*/;
@@ -9812,7 +9825,7 @@ void parser___ReduceAction95___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction95___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction95___init, 4928};
+  struct trace_t trace = {NULL, LOCATE_parser, 4933, LOCATE_parser___ReduceAction95___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction95].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction95].i] = 1;
@@ -9820,7 +9833,7 @@ void parser___ReduceAction95___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction96___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction96___action, 4932};
+  struct trace_t trace = {NULL, LOCATE_parser, 4937, LOCATE_parser___ReduceAction96___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9851,21 +9864,21 @@ void parser___ReduceAction96___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable7 =  variable6 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable7 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction96___action, 4941); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction96___action, LOCATE_parser, 4946); nit_exit(1);}
   variable8 =  variable5 /*nodearraylist2*/;
   variable9 = TAG_Bool(( variable8 /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable8 /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction96___action, 4943); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction96___action, LOCATE_parser, 4948); nit_exit(1);}
   variable10 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable8 /*tkwwritablenode6*/); /*new AWriteAble*/
   variable9 = variable10;
   variable10 =  variable4 /*nodearraylist3*/;
   variable11 = TAG_Bool(( variable10 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable10 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction96___action, 4949); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction96___action, LOCATE_parser, 4954); nit_exit(1);}
   variable11 =  variable3 /*nodearraylist4*/;
   variable12 = TAG_Bool(( variable11 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable11 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction96___action, 4951); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction96___action, LOCATE_parser, 4956); nit_exit(1);}
   variable12 =  variable2 /*nodearraylist5*/;
   variable13 = TAG_Bool(( variable12 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable12 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction96___action, 4953); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction96___action, LOCATE_parser, 4958); nit_exit(1);}
   variable14 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable7 /*pdocnode2*/,  NIT_NULL /*null*/,  variable9 /*pablenode4*/,  NIT_NULL /*null*/,  variable10 /*pvisibilitynode8*/,  variable11 /*tkwattrnode9*/,  variable12 /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable13 = variable14;
   variable1 =  variable13 /*ppropdefnode1*/ /*node_list=*/;
@@ -9875,7 +9888,7 @@ void parser___ReduceAction96___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction96___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction96___init, 4968};
+  struct trace_t trace = {NULL, LOCATE_parser, 4973, LOCATE_parser___ReduceAction96___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction96].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction96].i] = 1;
@@ -9883,7 +9896,7 @@ void parser___ReduceAction96___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction97___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction97___action, 4972};
+  struct trace_t trace = {NULL, LOCATE_parser, 4977, LOCATE_parser___ReduceAction97___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9918,24 +9931,24 @@ void parser___ReduceAction97___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable7 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction97___action, 4982); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction97___action, LOCATE_parser, 4987); nit_exit(1);}
   variable9 =  variable6 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable9 /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction97___action, 4984); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction97___action, LOCATE_parser, 4989); nit_exit(1);}
   variable10 =  variable5 /*nodearraylist3*/;
   variable11 = TAG_Bool(( variable10 /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable10 /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction97___action, 4986); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction97___action, LOCATE_parser, 4991); nit_exit(1);}
   variable12 = NEW_parser_prod___AWriteAble___init_awriteable( variable9 /*tkwredefnode5*/,  variable10 /*tkwwritablenode6*/); /*new AWriteAble*/
   variable11 = variable12;
   variable12 =  variable4 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable12 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction97___action, 4992); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction97___action, LOCATE_parser, 4997); nit_exit(1);}
   variable13 =  variable3 /*nodearraylist5*/;
   variable14 = TAG_Bool(( variable13 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable13 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction97___action, 4994); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction97___action, LOCATE_parser, 4999); nit_exit(1);}
   variable14 =  variable2 /*nodearraylist6*/;
   variable15 = TAG_Bool(( variable14 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable14 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction97___action, 4996); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction97___action, LOCATE_parser, 5001); nit_exit(1);}
   variable16 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable8 /*pdocnode2*/,  NIT_NULL /*null*/,  variable11 /*pablenode4*/,  NIT_NULL /*null*/,  variable12 /*pvisibilitynode8*/,  variable13 /*tkwattrnode9*/,  variable14 /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable15 = variable16;
   variable1 =  variable15 /*ppropdefnode1*/ /*node_list=*/;
@@ -9945,7 +9958,7 @@ void parser___ReduceAction97___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction97___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction97___init, 5011};
+  struct trace_t trace = {NULL, LOCATE_parser, 5016, LOCATE_parser___ReduceAction97___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction97].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction97].i] = 1;
@@ -9953,7 +9966,7 @@ void parser___ReduceAction97___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction98___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction98___action, 5015};
+  struct trace_t trace = {NULL, LOCATE_parser, 5020, LOCATE_parser___ReduceAction98___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -9979,16 +9992,16 @@ void parser___ReduceAction98___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction98___action, 5023); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction98___action, LOCATE_parser, 5028); nit_exit(1);}
   variable7 =  variable4 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable7 /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction98___action, 5025); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction98___action, LOCATE_parser, 5030); nit_exit(1);}
   variable8 =  variable3 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*tkwattrnode7*/==NIT_NULL) || VAL_ISA( variable8 /*tkwattrnode7*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction98___action, 5027); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction98___action, LOCATE_parser, 5032); nit_exit(1);}
   variable9 =  variable2 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*tattridnode8*/==NIT_NULL) || VAL_ISA( variable9 /*tattridnode8*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction98___action, 5029); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction98___action, LOCATE_parser, 5034); nit_exit(1);}
   variable11 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable6 /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable7 /*pvisibilitynode6*/,  variable8 /*tkwattrnode7*/,  variable9 /*tattridnode8*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable10 = variable11;
   variable1 =  variable10 /*ppropdefnode1*/ /*node_list=*/;
@@ -9998,7 +10011,7 @@ void parser___ReduceAction98___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction98___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction98___init, 5044};
+  struct trace_t trace = {NULL, LOCATE_parser, 5049, LOCATE_parser___ReduceAction98___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction98].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction98].i] = 1;
@@ -10006,7 +10019,7 @@ void parser___ReduceAction98___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction99___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction99___action, 5048};
+  struct trace_t trace = {NULL, LOCATE_parser, 5053, LOCATE_parser___ReduceAction99___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -10046,29 +10059,29 @@ void parser___ReduceAction99___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable9 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction99___action, 5059); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction99___action, LOCATE_parser, 5064); nit_exit(1);}
   variable10 =  variable7 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable10 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction99___action, 5061); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction99___action, LOCATE_parser, 5066); nit_exit(1);}
   variable12 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable10 /*tkwreadablenode5*/); /*new AReadAble*/
   variable11 = variable12;
   variable12 =  variable6 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable12 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction99___action, 5067); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction99___action, LOCATE_parser, 5072); nit_exit(1);}
   variable14 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable12 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable13 = variable14;
   variable14 =  variable5 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable14 /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction99___action, 5073); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction99___action, LOCATE_parser, 5078); nit_exit(1);}
   variable15 =  variable4 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable15 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction99___action, 5075); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction99___action, LOCATE_parser, 5080); nit_exit(1);}
   variable16 =  variable3 /*nodearraylist6*/;
   variable17 = TAG_Bool(( variable16 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable16 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction99___action, 5077); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction99___action, LOCATE_parser, 5082); nit_exit(1);}
   variable17 =  variable2 /*nodearraylist7*/;
   variable18 = TAG_Bool(( variable17 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable17 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction99___action, 5079); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction99___action, LOCATE_parser, 5084); nit_exit(1);}
   variable19 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable9 /*pdocnode2*/,  variable11 /*pablenode3*/,  variable13 /*pablenode6*/,  variable14 /*tkwredefnode9*/,  variable15 /*pvisibilitynode10*/,  variable16 /*tkwattrnode11*/,  variable17 /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable18 = variable19;
   variable1 =  variable18 /*ppropdefnode1*/ /*node_list=*/;
@@ -10078,7 +10091,7 @@ void parser___ReduceAction99___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction99___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction99___init, 5094};
+  struct trace_t trace = {NULL, LOCATE_parser, 5099, LOCATE_parser___ReduceAction99___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction99].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction99].i] = 1;
@@ -10086,7 +10099,7 @@ void parser___ReduceAction99___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction100___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction100___action, 5098};
+  struct trace_t trace = {NULL, LOCATE_parser, 5103, LOCATE_parser___ReduceAction100___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -10130,32 +10143,32 @@ void parser___ReduceAction100___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction100___action, 5110); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction100___action, LOCATE_parser, 5115); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable11 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction100___action, 5112); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction100___action, LOCATE_parser, 5117); nit_exit(1);}
   variable13 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable11 /*tkwreadablenode5*/); /*new AReadAble*/
   variable12 = variable13;
   variable13 =  variable7 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable13 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction100___action, 5118); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction100___action, LOCATE_parser, 5123); nit_exit(1);}
   variable14 =  variable6 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable14 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction100___action, 5120); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction100___action, LOCATE_parser, 5125); nit_exit(1);}
   variable16 = NEW_parser_prod___AWriteAble___init_awriteable( variable13 /*tkwredefnode7*/,  variable14 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable15 = variable16;
   variable16 =  variable5 /*nodearraylist5*/;
   variable17 = TAG_Bool(( variable16 /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable16 /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction100___action, 5126); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction100___action, LOCATE_parser, 5131); nit_exit(1);}
   variable17 =  variable4 /*nodearraylist6*/;
   variable18 = TAG_Bool(( variable17 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable17 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction100___action, 5128); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction100___action, LOCATE_parser, 5133); nit_exit(1);}
   variable18 =  variable3 /*nodearraylist7*/;
   variable19 = TAG_Bool(( variable18 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable18 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction100___action, 5130); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction100___action, LOCATE_parser, 5135); nit_exit(1);}
   variable19 =  variable2 /*nodearraylist8*/;
   variable20 = TAG_Bool(( variable19 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable19 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction100___action, 5132); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction100___action, LOCATE_parser, 5137); nit_exit(1);}
   variable21 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable10 /*pdocnode2*/,  variable12 /*pablenode3*/,  variable15 /*pablenode6*/,  variable16 /*tkwredefnode9*/,  variable17 /*pvisibilitynode10*/,  variable18 /*tkwattrnode11*/,  variable19 /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable20 = variable21;
   variable1 =  variable20 /*ppropdefnode1*/ /*node_list=*/;
@@ -10165,7 +10178,7 @@ void parser___ReduceAction100___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction100___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction100___init, 5147};
+  struct trace_t trace = {NULL, LOCATE_parser, 5152, LOCATE_parser___ReduceAction100___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction100].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction100].i] = 1;
@@ -10173,7 +10186,7 @@ void parser___ReduceAction100___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction101___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction101___action, 5151};
+  struct trace_t trace = {NULL, LOCATE_parser, 5156, LOCATE_parser___ReduceAction101___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -10208,24 +10221,24 @@ void parser___ReduceAction101___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable7 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction101___action, 5161); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction101___action, LOCATE_parser, 5166); nit_exit(1);}
   variable9 =  variable6 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable9 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction101___action, 5163); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction101___action, LOCATE_parser, 5168); nit_exit(1);}
   variable11 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable9 /*tkwreadablenode5*/); /*new AReadAble*/
   variable10 = variable11;
   variable11 =  variable5 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable11 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction101___action, 5169); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction101___action, LOCATE_parser, 5174); nit_exit(1);}
   variable12 =  variable4 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable12 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction101___action, 5171); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction101___action, LOCATE_parser, 5176); nit_exit(1);}
   variable13 =  variable3 /*nodearraylist5*/;
   variable14 = TAG_Bool(( variable13 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable13 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction101___action, 5173); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction101___action, LOCATE_parser, 5178); nit_exit(1);}
   variable14 =  variable2 /*nodearraylist6*/;
   variable15 = TAG_Bool(( variable14 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable14 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction101___action, 5175); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction101___action, LOCATE_parser, 5180); nit_exit(1);}
   variable16 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable8 /*pdocnode2*/,  variable10 /*pablenode3*/,  NIT_NULL /*null*/,  variable11 /*tkwredefnode7*/,  variable12 /*pvisibilitynode8*/,  variable13 /*tkwattrnode9*/,  variable14 /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable15 = variable16;
   variable1 =  variable15 /*ppropdefnode1*/ /*node_list=*/;
@@ -10235,7 +10248,7 @@ void parser___ReduceAction101___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction101___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction101___init, 5190};
+  struct trace_t trace = {NULL, LOCATE_parser, 5195, LOCATE_parser___ReduceAction101___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction101].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction101].i] = 1;
@@ -10243,7 +10256,7 @@ void parser___ReduceAction101___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction102___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction102___action, 5194};
+  struct trace_t trace = {NULL, LOCATE_parser, 5199, LOCATE_parser___ReduceAction102___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -10287,32 +10300,32 @@ void parser___ReduceAction102___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction102___action, 5206); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction102___action, LOCATE_parser, 5211); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable11 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction102___action, 5208); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction102___action, LOCATE_parser, 5213); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable12 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction102___action, 5210); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction102___action, LOCATE_parser, 5215); nit_exit(1);}
   variable14 = NEW_parser_prod___AReadAble___init_areadable( variable11 /*tkwredefnode4*/,  variable12 /*tkwreadablenode5*/); /*new AReadAble*/
   variable13 = variable14;
   variable14 =  variable6 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable14 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction102___action, 5216); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction102___action, LOCATE_parser, 5221); nit_exit(1);}
   variable16 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable14 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable15 = variable16;
   variable16 =  variable5 /*nodearraylist5*/;
   variable17 = TAG_Bool(( variable16 /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable16 /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction102___action, 5222); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction102___action, LOCATE_parser, 5227); nit_exit(1);}
   variable17 =  variable4 /*nodearraylist6*/;
   variable18 = TAG_Bool(( variable17 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable17 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction102___action, 5224); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction102___action, LOCATE_parser, 5229); nit_exit(1);}
   variable18 =  variable3 /*nodearraylist7*/;
   variable19 = TAG_Bool(( variable18 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable18 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction102___action, 5226); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction102___action, LOCATE_parser, 5231); nit_exit(1);}
   variable19 =  variable2 /*nodearraylist8*/;
   variable20 = TAG_Bool(( variable19 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable19 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction102___action, 5228); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction102___action, LOCATE_parser, 5233); nit_exit(1);}
   variable21 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable10 /*pdocnode2*/,  variable13 /*pablenode3*/,  variable15 /*pablenode6*/,  variable16 /*tkwredefnode9*/,  variable17 /*pvisibilitynode10*/,  variable18 /*tkwattrnode11*/,  variable19 /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable20 = variable21;
   variable1 =  variable20 /*ppropdefnode1*/ /*node_list=*/;
@@ -10322,7 +10335,7 @@ void parser___ReduceAction102___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction102___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction102___init, 5243};
+  struct trace_t trace = {NULL, LOCATE_parser, 5248, LOCATE_parser___ReduceAction102___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction102].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction102].i] = 1;
@@ -10330,7 +10343,7 @@ void parser___ReduceAction102___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction103___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction103___action, 5247};
+  struct trace_t trace = {NULL, LOCATE_parser, 5252, LOCATE_parser___ReduceAction103___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -10378,35 +10391,35 @@ void parser___ReduceAction103___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction103___action, 5260); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction103___action, LOCATE_parser, 5265); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable12 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction103___action, 5262); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction103___action, LOCATE_parser, 5267); nit_exit(1);}
   variable13 =  variable8 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable13 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction103___action, 5264); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction103___action, LOCATE_parser, 5269); nit_exit(1);}
   variable15 = NEW_parser_prod___AReadAble___init_areadable( variable12 /*tkwredefnode4*/,  variable13 /*tkwreadablenode5*/); /*new AReadAble*/
   variable14 = variable15;
   variable15 =  variable7 /*nodearraylist4*/;
   variable16 = TAG_Bool(( variable15 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable15 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction103___action, 5270); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction103___action, LOCATE_parser, 5275); nit_exit(1);}
   variable16 =  variable6 /*nodearraylist5*/;
   variable17 = TAG_Bool(( variable16 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable16 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction103___action, 5272); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction103___action, LOCATE_parser, 5277); nit_exit(1);}
   variable18 = NEW_parser_prod___AWriteAble___init_awriteable( variable15 /*tkwredefnode7*/,  variable16 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable17 = variable18;
   variable18 =  variable5 /*nodearraylist6*/;
   variable19 = TAG_Bool(( variable18 /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable18 /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction103___action, 5278); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction103___action, LOCATE_parser, 5283); nit_exit(1);}
   variable19 =  variable4 /*nodearraylist7*/;
   variable20 = TAG_Bool(( variable19 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable19 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction103___action, 5280); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction103___action, LOCATE_parser, 5285); nit_exit(1);}
   variable20 =  variable3 /*nodearraylist8*/;
   variable21 = TAG_Bool(( variable20 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable20 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction103___action, 5282); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction103___action, LOCATE_parser, 5287); nit_exit(1);}
   variable21 =  variable2 /*nodearraylist9*/;
   variable22 = TAG_Bool(( variable21 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable21 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction103___action, 5284); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction103___action, LOCATE_parser, 5289); nit_exit(1);}
   variable23 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable11 /*pdocnode2*/,  variable14 /*pablenode3*/,  variable17 /*pablenode6*/,  variable18 /*tkwredefnode9*/,  variable19 /*pvisibilitynode10*/,  variable20 /*tkwattrnode11*/,  variable21 /*tattridnode12*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable22 = variable23;
   variable1 =  variable22 /*ppropdefnode1*/ /*node_list=*/;
@@ -10416,7 +10429,7 @@ void parser___ReduceAction103___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction103___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction103___init, 5299};
+  struct trace_t trace = {NULL, LOCATE_parser, 5304, LOCATE_parser___ReduceAction103___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction103].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction103].i] = 1;
@@ -10424,7 +10437,7 @@ void parser___ReduceAction103___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction104___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction104___action, 5303};
+  struct trace_t trace = {NULL, LOCATE_parser, 5308, LOCATE_parser___ReduceAction104___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -10463,27 +10476,27 @@ void parser___ReduceAction104___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable9 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction104___action, 5314); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction104___action, LOCATE_parser, 5319); nit_exit(1);}
   variable10 =  variable7 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable10 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction104___action, 5316); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction104___action, LOCATE_parser, 5321); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable11 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction104___action, 5318); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction104___action, LOCATE_parser, 5323); nit_exit(1);}
   variable13 = NEW_parser_prod___AReadAble___init_areadable( variable10 /*tkwredefnode4*/,  variable11 /*tkwreadablenode5*/); /*new AReadAble*/
   variable12 = variable13;
   variable13 =  variable5 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable13 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction104___action, 5324); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction104___action, LOCATE_parser, 5329); nit_exit(1);}
   variable14 =  variable4 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable14 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction104___action, 5326); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction104___action, LOCATE_parser, 5331); nit_exit(1);}
   variable15 =  variable3 /*nodearraylist6*/;
   variable16 = TAG_Bool(( variable15 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable15 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction104___action, 5328); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction104___action, LOCATE_parser, 5333); nit_exit(1);}
   variable16 =  variable2 /*nodearraylist7*/;
   variable17 = TAG_Bool(( variable16 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable16 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction104___action, 5330); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction104___action, LOCATE_parser, 5335); nit_exit(1);}
   variable18 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable9 /*pdocnode2*/,  variable12 /*pablenode3*/,  NIT_NULL /*null*/,  variable13 /*tkwredefnode7*/,  variable14 /*pvisibilitynode8*/,  variable15 /*tkwattrnode9*/,  variable16 /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable17 = variable18;
   variable1 =  variable17 /*ppropdefnode1*/ /*node_list=*/;
@@ -10493,7 +10506,7 @@ void parser___ReduceAction104___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction104___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction104___init, 5345};
+  struct trace_t trace = {NULL, LOCATE_parser, 5350, LOCATE_parser___ReduceAction104___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction104].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction104].i] = 1;
@@ -10501,7 +10514,7 @@ void parser___ReduceAction104___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction105___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction105___action, 5349};
+  struct trace_t trace = {NULL, LOCATE_parser, 5354, LOCATE_parser___ReduceAction105___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -10536,24 +10549,24 @@ void parser___ReduceAction105___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable7 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction105___action, 5359); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction105___action, LOCATE_parser, 5364); nit_exit(1);}
   variable9 =  variable6 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable9 /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction105___action, 5361); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction105___action, LOCATE_parser, 5366); nit_exit(1);}
   variable11 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable9 /*tkwwritablenode6*/); /*new AWriteAble*/
   variable10 = variable11;
   variable11 =  variable5 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable11 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction105___action, 5367); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction105___action, LOCATE_parser, 5372); nit_exit(1);}
   variable12 =  variable4 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable12 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction105___action, 5369); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction105___action, LOCATE_parser, 5374); nit_exit(1);}
   variable13 =  variable3 /*nodearraylist5*/;
   variable14 = TAG_Bool(( variable13 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable13 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction105___action, 5371); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction105___action, LOCATE_parser, 5376); nit_exit(1);}
   variable14 =  variable2 /*nodearraylist6*/;
   variable15 = TAG_Bool(( variable14 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable14 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction105___action, 5373); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction105___action, LOCATE_parser, 5378); nit_exit(1);}
   variable16 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable8 /*pdocnode2*/,  NIT_NULL /*null*/,  variable10 /*pablenode4*/,  variable11 /*tkwredefnode7*/,  variable12 /*pvisibilitynode8*/,  variable13 /*tkwattrnode9*/,  variable14 /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable15 = variable16;
   variable1 =  variable15 /*ppropdefnode1*/ /*node_list=*/;
@@ -10563,7 +10576,7 @@ void parser___ReduceAction105___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction105___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction105___init, 5388};
+  struct trace_t trace = {NULL, LOCATE_parser, 5393, LOCATE_parser___ReduceAction105___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction105].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction105].i] = 1;
@@ -10571,7 +10584,7 @@ void parser___ReduceAction105___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction106___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction106___action, 5392};
+  struct trace_t trace = {NULL, LOCATE_parser, 5397, LOCATE_parser___ReduceAction106___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -10610,27 +10623,27 @@ void parser___ReduceAction106___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable9 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction106___action, 5403); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction106___action, LOCATE_parser, 5408); nit_exit(1);}
   variable10 =  variable7 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable10 /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction106___action, 5405); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction106___action, LOCATE_parser, 5410); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable11 /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction106___action, 5407); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction106___action, LOCATE_parser, 5412); nit_exit(1);}
   variable13 = NEW_parser_prod___AWriteAble___init_awriteable( variable10 /*tkwredefnode5*/,  variable11 /*tkwwritablenode6*/); /*new AWriteAble*/
   variable12 = variable13;
   variable13 =  variable5 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable13 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction106___action, 5413); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction106___action, LOCATE_parser, 5418); nit_exit(1);}
   variable14 =  variable4 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable14 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction106___action, 5415); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction106___action, LOCATE_parser, 5420); nit_exit(1);}
   variable15 =  variable3 /*nodearraylist6*/;
   variable16 = TAG_Bool(( variable15 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable15 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction106___action, 5417); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction106___action, LOCATE_parser, 5422); nit_exit(1);}
   variable16 =  variable2 /*nodearraylist7*/;
   variable17 = TAG_Bool(( variable16 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable16 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction106___action, 5419); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction106___action, LOCATE_parser, 5424); nit_exit(1);}
   variable18 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable9 /*pdocnode2*/,  NIT_NULL /*null*/,  variable12 /*pablenode4*/,  variable13 /*tkwredefnode7*/,  variable14 /*pvisibilitynode8*/,  variable15 /*tkwattrnode9*/,  variable16 /*tattridnode10*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable17 = variable18;
   variable1 =  variable17 /*ppropdefnode1*/ /*node_list=*/;
@@ -10640,7 +10653,7 @@ void parser___ReduceAction106___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction106___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction106___init, 5434};
+  struct trace_t trace = {NULL, LOCATE_parser, 5439, LOCATE_parser___ReduceAction106___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction106].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction106].i] = 1;
@@ -10648,7 +10661,7 @@ void parser___ReduceAction106___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction107___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction107___action, 5438};
+  struct trace_t trace = {NULL, LOCATE_parser, 5443, LOCATE_parser___ReduceAction107___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -10678,19 +10691,19 @@ void parser___ReduceAction107___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable7 =  variable6 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable7 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction107___action, 5447); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction107___action, LOCATE_parser, 5452); nit_exit(1);}
   variable8 =  variable5 /*nodearraylist2*/;
   variable9 = TAG_Bool(( variable8 /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable8 /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction107___action, 5449); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction107___action, LOCATE_parser, 5454); nit_exit(1);}
   variable9 =  variable4 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable9 /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction107___action, 5451); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction107___action, LOCATE_parser, 5456); nit_exit(1);}
   variable10 =  variable3 /*nodearraylist4*/;
   variable11 = TAG_Bool(( variable10 /*tkwattrnode7*/==NIT_NULL) || VAL_ISA( variable10 /*tkwattrnode7*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction107___action, 5453); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction107___action, LOCATE_parser, 5458); nit_exit(1);}
   variable11 =  variable2 /*nodearraylist5*/;
   variable12 = TAG_Bool(( variable11 /*tattridnode8*/==NIT_NULL) || VAL_ISA( variable11 /*tattridnode8*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction107___action, 5455); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction107___action, LOCATE_parser, 5460); nit_exit(1);}
   variable13 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable7 /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable8 /*tkwredefnode5*/,  variable9 /*pvisibilitynode6*/,  variable10 /*tkwattrnode7*/,  variable11 /*tattridnode8*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable12 = variable13;
   variable1 =  variable12 /*ppropdefnode1*/ /*node_list=*/;
@@ -10700,7 +10713,7 @@ void parser___ReduceAction107___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction107___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction107___init, 5470};
+  struct trace_t trace = {NULL, LOCATE_parser, 5475, LOCATE_parser___ReduceAction107___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction107].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction107].i] = 1;
@@ -10708,7 +10721,7 @@ void parser___ReduceAction107___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction108___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction108___action, 5474};
+  struct trace_t trace = {NULL, LOCATE_parser, 5479, LOCATE_parser___ReduceAction108___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -10748,29 +10761,29 @@ void parser___ReduceAction108___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable9 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction108___action, 5485); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction108___action, LOCATE_parser, 5490); nit_exit(1);}
   variable10 =  variable7 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable10 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction108___action, 5487); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction108___action, LOCATE_parser, 5492); nit_exit(1);}
   variable12 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable10 /*tkwreadablenode5*/); /*new AReadAble*/
   variable11 = variable12;
   variable12 =  variable6 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable12 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction108___action, 5493); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction108___action, LOCATE_parser, 5498); nit_exit(1);}
   variable14 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable12 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable13 = variable14;
   variable14 =  variable5 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable14 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction108___action, 5499); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction108___action, LOCATE_parser, 5504); nit_exit(1);}
   variable15 =  variable4 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable15 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction108___action, 5501); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction108___action, LOCATE_parser, 5506); nit_exit(1);}
   variable16 =  variable3 /*nodearraylist6*/;
   variable17 = TAG_Bool(( variable16 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable16 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction108___action, 5503); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction108___action, LOCATE_parser, 5508); nit_exit(1);}
   variable17 =  variable2 /*nodearraylist7*/;
   variable18 = TAG_Bool(( variable17 /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable17 /*ptypenode13*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction108___action, 5505); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction108___action, LOCATE_parser, 5510); nit_exit(1);}
   variable19 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable9 /*pdocnode2*/,  variable11 /*pablenode3*/,  variable13 /*pablenode6*/,  NIT_NULL /*null*/,  variable14 /*pvisibilitynode10*/,  variable15 /*tkwattrnode11*/,  variable16 /*tattridnode12*/,  variable17 /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable18 = variable19;
   variable1 =  variable18 /*ppropdefnode1*/ /*node_list=*/;
@@ -10780,7 +10793,7 @@ void parser___ReduceAction108___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction108___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction108___init, 5520};
+  struct trace_t trace = {NULL, LOCATE_parser, 5525, LOCATE_parser___ReduceAction108___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction108].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction108].i] = 1;
@@ -10788,7 +10801,7 @@ void parser___ReduceAction108___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction109___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction109___action, 5524};
+  struct trace_t trace = {NULL, LOCATE_parser, 5529, LOCATE_parser___ReduceAction109___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -10832,32 +10845,32 @@ void parser___ReduceAction109___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction109___action, 5536); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction109___action, LOCATE_parser, 5541); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable11 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction109___action, 5538); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction109___action, LOCATE_parser, 5543); nit_exit(1);}
   variable13 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable11 /*tkwreadablenode5*/); /*new AReadAble*/
   variable12 = variable13;
   variable13 =  variable7 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable13 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction109___action, 5544); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction109___action, LOCATE_parser, 5549); nit_exit(1);}
   variable14 =  variable6 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable14 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction109___action, 5546); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction109___action, LOCATE_parser, 5551); nit_exit(1);}
   variable16 = NEW_parser_prod___AWriteAble___init_awriteable( variable13 /*tkwredefnode7*/,  variable14 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable15 = variable16;
   variable16 =  variable5 /*nodearraylist5*/;
   variable17 = TAG_Bool(( variable16 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable16 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction109___action, 5552); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction109___action, LOCATE_parser, 5557); nit_exit(1);}
   variable17 =  variable4 /*nodearraylist6*/;
   variable18 = TAG_Bool(( variable17 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable17 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction109___action, 5554); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction109___action, LOCATE_parser, 5559); nit_exit(1);}
   variable18 =  variable3 /*nodearraylist7*/;
   variable19 = TAG_Bool(( variable18 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable18 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction109___action, 5556); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction109___action, LOCATE_parser, 5561); nit_exit(1);}
   variable19 =  variable2 /*nodearraylist8*/;
   variable20 = TAG_Bool(( variable19 /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable19 /*ptypenode13*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction109___action, 5558); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction109___action, LOCATE_parser, 5563); nit_exit(1);}
   variable21 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable10 /*pdocnode2*/,  variable12 /*pablenode3*/,  variable15 /*pablenode6*/,  NIT_NULL /*null*/,  variable16 /*pvisibilitynode10*/,  variable17 /*tkwattrnode11*/,  variable18 /*tattridnode12*/,  variable19 /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable20 = variable21;
   variable1 =  variable20 /*ppropdefnode1*/ /*node_list=*/;
@@ -10867,7 +10880,7 @@ void parser___ReduceAction109___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction109___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction109___init, 5573};
+  struct trace_t trace = {NULL, LOCATE_parser, 5578, LOCATE_parser___ReduceAction109___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction109].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction109].i] = 1;
@@ -10875,7 +10888,7 @@ void parser___ReduceAction109___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction110___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction110___action, 5577};
+  struct trace_t trace = {NULL, LOCATE_parser, 5582, LOCATE_parser___ReduceAction110___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -10910,24 +10923,24 @@ void parser___ReduceAction110___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable7 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction110___action, 5587); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction110___action, LOCATE_parser, 5592); nit_exit(1);}
   variable9 =  variable6 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable9 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction110___action, 5589); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction110___action, LOCATE_parser, 5594); nit_exit(1);}
   variable11 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable9 /*tkwreadablenode5*/); /*new AReadAble*/
   variable10 = variable11;
   variable11 =  variable5 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable11 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction110___action, 5595); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction110___action, LOCATE_parser, 5600); nit_exit(1);}
   variable12 =  variable4 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable12 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction110___action, 5597); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction110___action, LOCATE_parser, 5602); nit_exit(1);}
   variable13 =  variable3 /*nodearraylist5*/;
   variable14 = TAG_Bool(( variable13 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable13 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction110___action, 5599); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction110___action, LOCATE_parser, 5604); nit_exit(1);}
   variable14 =  variable2 /*nodearraylist6*/;
   variable15 = TAG_Bool(( variable14 /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable14 /*ptypenode11*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction110___action, 5601); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction110___action, LOCATE_parser, 5606); nit_exit(1);}
   variable16 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable8 /*pdocnode2*/,  variable10 /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable11 /*pvisibilitynode8*/,  variable12 /*tkwattrnode9*/,  variable13 /*tattridnode10*/,  variable14 /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable15 = variable16;
   variable1 =  variable15 /*ppropdefnode1*/ /*node_list=*/;
@@ -10937,7 +10950,7 @@ void parser___ReduceAction110___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction110___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction110___init, 5616};
+  struct trace_t trace = {NULL, LOCATE_parser, 5621, LOCATE_parser___ReduceAction110___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction110].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction110].i] = 1;
@@ -10945,7 +10958,7 @@ void parser___ReduceAction110___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction111___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction111___action, 5620};
+  struct trace_t trace = {NULL, LOCATE_parser, 5625, LOCATE_parser___ReduceAction111___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -10989,32 +11002,32 @@ void parser___ReduceAction111___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction111___action, 5632); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction111___action, LOCATE_parser, 5637); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable11 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction111___action, 5634); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction111___action, LOCATE_parser, 5639); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable12 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction111___action, 5636); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction111___action, LOCATE_parser, 5641); nit_exit(1);}
   variable14 = NEW_parser_prod___AReadAble___init_areadable( variable11 /*tkwredefnode4*/,  variable12 /*tkwreadablenode5*/); /*new AReadAble*/
   variable13 = variable14;
   variable14 =  variable6 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable14 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction111___action, 5642); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction111___action, LOCATE_parser, 5647); nit_exit(1);}
   variable16 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable14 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable15 = variable16;
   variable16 =  variable5 /*nodearraylist5*/;
   variable17 = TAG_Bool(( variable16 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable16 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction111___action, 5648); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction111___action, LOCATE_parser, 5653); nit_exit(1);}
   variable17 =  variable4 /*nodearraylist6*/;
   variable18 = TAG_Bool(( variable17 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable17 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction111___action, 5650); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction111___action, LOCATE_parser, 5655); nit_exit(1);}
   variable18 =  variable3 /*nodearraylist7*/;
   variable19 = TAG_Bool(( variable18 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable18 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction111___action, 5652); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction111___action, LOCATE_parser, 5657); nit_exit(1);}
   variable19 =  variable2 /*nodearraylist8*/;
   variable20 = TAG_Bool(( variable19 /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable19 /*ptypenode13*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction111___action, 5654); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction111___action, LOCATE_parser, 5659); nit_exit(1);}
   variable21 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable10 /*pdocnode2*/,  variable13 /*pablenode3*/,  variable15 /*pablenode6*/,  NIT_NULL /*null*/,  variable16 /*pvisibilitynode10*/,  variable17 /*tkwattrnode11*/,  variable18 /*tattridnode12*/,  variable19 /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable20 = variable21;
   variable1 =  variable20 /*ppropdefnode1*/ /*node_list=*/;
@@ -11024,7 +11037,7 @@ void parser___ReduceAction111___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction111___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction111___init, 5669};
+  struct trace_t trace = {NULL, LOCATE_parser, 5674, LOCATE_parser___ReduceAction111___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction111].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction111].i] = 1;
@@ -11032,7 +11045,7 @@ void parser___ReduceAction111___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction112___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction112___action, 5673};
+  struct trace_t trace = {NULL, LOCATE_parser, 5678, LOCATE_parser___ReduceAction112___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -11080,35 +11093,35 @@ void parser___ReduceAction112___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction112___action, 5686); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction112___action, LOCATE_parser, 5691); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable12 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction112___action, 5688); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction112___action, LOCATE_parser, 5693); nit_exit(1);}
   variable13 =  variable8 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable13 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction112___action, 5690); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction112___action, LOCATE_parser, 5695); nit_exit(1);}
   variable15 = NEW_parser_prod___AReadAble___init_areadable( variable12 /*tkwredefnode4*/,  variable13 /*tkwreadablenode5*/); /*new AReadAble*/
   variable14 = variable15;
   variable15 =  variable7 /*nodearraylist4*/;
   variable16 = TAG_Bool(( variable15 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable15 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction112___action, 5696); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction112___action, LOCATE_parser, 5701); nit_exit(1);}
   variable16 =  variable6 /*nodearraylist5*/;
   variable17 = TAG_Bool(( variable16 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable16 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction112___action, 5698); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction112___action, LOCATE_parser, 5703); nit_exit(1);}
   variable18 = NEW_parser_prod___AWriteAble___init_awriteable( variable15 /*tkwredefnode7*/,  variable16 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable17 = variable18;
   variable18 =  variable5 /*nodearraylist6*/;
   variable19 = TAG_Bool(( variable18 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable18 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction112___action, 5704); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction112___action, LOCATE_parser, 5709); nit_exit(1);}
   variable19 =  variable4 /*nodearraylist7*/;
   variable20 = TAG_Bool(( variable19 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable19 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction112___action, 5706); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction112___action, LOCATE_parser, 5711); nit_exit(1);}
   variable20 =  variable3 /*nodearraylist8*/;
   variable21 = TAG_Bool(( variable20 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable20 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction112___action, 5708); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction112___action, LOCATE_parser, 5713); nit_exit(1);}
   variable21 =  variable2 /*nodearraylist9*/;
   variable22 = TAG_Bool(( variable21 /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable21 /*ptypenode13*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction112___action, 5710); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction112___action, LOCATE_parser, 5715); nit_exit(1);}
   variable23 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable11 /*pdocnode2*/,  variable14 /*pablenode3*/,  variable17 /*pablenode6*/,  NIT_NULL /*null*/,  variable18 /*pvisibilitynode10*/,  variable19 /*tkwattrnode11*/,  variable20 /*tattridnode12*/,  variable21 /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable22 = variable23;
   variable1 =  variable22 /*ppropdefnode1*/ /*node_list=*/;
@@ -11118,7 +11131,7 @@ void parser___ReduceAction112___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction112___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction112___init, 5725};
+  struct trace_t trace = {NULL, LOCATE_parser, 5730, LOCATE_parser___ReduceAction112___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction112].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction112].i] = 1;
@@ -11126,7 +11139,7 @@ void parser___ReduceAction112___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction113___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction113___action, 5729};
+  struct trace_t trace = {NULL, LOCATE_parser, 5734, LOCATE_parser___ReduceAction113___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -11165,27 +11178,27 @@ void parser___ReduceAction113___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable9 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction113___action, 5740); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction113___action, LOCATE_parser, 5745); nit_exit(1);}
   variable10 =  variable7 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable10 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction113___action, 5742); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction113___action, LOCATE_parser, 5747); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable11 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction113___action, 5744); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction113___action, LOCATE_parser, 5749); nit_exit(1);}
   variable13 = NEW_parser_prod___AReadAble___init_areadable( variable10 /*tkwredefnode4*/,  variable11 /*tkwreadablenode5*/); /*new AReadAble*/
   variable12 = variable13;
   variable13 =  variable5 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable13 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction113___action, 5750); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction113___action, LOCATE_parser, 5755); nit_exit(1);}
   variable14 =  variable4 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable14 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction113___action, 5752); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction113___action, LOCATE_parser, 5757); nit_exit(1);}
   variable15 =  variable3 /*nodearraylist6*/;
   variable16 = TAG_Bool(( variable15 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable15 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction113___action, 5754); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction113___action, LOCATE_parser, 5759); nit_exit(1);}
   variable16 =  variable2 /*nodearraylist7*/;
   variable17 = TAG_Bool(( variable16 /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable16 /*ptypenode11*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction113___action, 5756); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction113___action, LOCATE_parser, 5761); nit_exit(1);}
   variable18 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable9 /*pdocnode2*/,  variable12 /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable13 /*pvisibilitynode8*/,  variable14 /*tkwattrnode9*/,  variable15 /*tattridnode10*/,  variable16 /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable17 = variable18;
   variable1 =  variable17 /*ppropdefnode1*/ /*node_list=*/;
@@ -11195,7 +11208,7 @@ void parser___ReduceAction113___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction113___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction113___init, 5771};
+  struct trace_t trace = {NULL, LOCATE_parser, 5776, LOCATE_parser___ReduceAction113___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction113].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction113].i] = 1;
@@ -11203,7 +11216,7 @@ void parser___ReduceAction113___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction114___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction114___action, 5775};
+  struct trace_t trace = {NULL, LOCATE_parser, 5780, LOCATE_parser___ReduceAction114___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -11238,24 +11251,24 @@ void parser___ReduceAction114___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable7 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction114___action, 5785); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction114___action, LOCATE_parser, 5790); nit_exit(1);}
   variable9 =  variable6 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable9 /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction114___action, 5787); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction114___action, LOCATE_parser, 5792); nit_exit(1);}
   variable11 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable9 /*tkwwritablenode6*/); /*new AWriteAble*/
   variable10 = variable11;
   variable11 =  variable5 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable11 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction114___action, 5793); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction114___action, LOCATE_parser, 5798); nit_exit(1);}
   variable12 =  variable4 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable12 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction114___action, 5795); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction114___action, LOCATE_parser, 5800); nit_exit(1);}
   variable13 =  variable3 /*nodearraylist5*/;
   variable14 = TAG_Bool(( variable13 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable13 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction114___action, 5797); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction114___action, LOCATE_parser, 5802); nit_exit(1);}
   variable14 =  variable2 /*nodearraylist6*/;
   variable15 = TAG_Bool(( variable14 /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable14 /*ptypenode11*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction114___action, 5799); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction114___action, LOCATE_parser, 5804); nit_exit(1);}
   variable16 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable8 /*pdocnode2*/,  NIT_NULL /*null*/,  variable10 /*pablenode4*/,  NIT_NULL /*null*/,  variable11 /*pvisibilitynode8*/,  variable12 /*tkwattrnode9*/,  variable13 /*tattridnode10*/,  variable14 /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable15 = variable16;
   variable1 =  variable15 /*ppropdefnode1*/ /*node_list=*/;
@@ -11265,7 +11278,7 @@ void parser___ReduceAction114___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction114___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction114___init, 5814};
+  struct trace_t trace = {NULL, LOCATE_parser, 5819, LOCATE_parser___ReduceAction114___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction114].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction114].i] = 1;
@@ -11273,7 +11286,7 @@ void parser___ReduceAction114___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction115___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction115___action, 5818};
+  struct trace_t trace = {NULL, LOCATE_parser, 5823, LOCATE_parser___ReduceAction115___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -11312,27 +11325,27 @@ void parser___ReduceAction115___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable9 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction115___action, 5829); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction115___action, LOCATE_parser, 5834); nit_exit(1);}
   variable10 =  variable7 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable10 /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction115___action, 5831); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction115___action, LOCATE_parser, 5836); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable11 /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction115___action, 5833); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction115___action, LOCATE_parser, 5838); nit_exit(1);}
   variable13 = NEW_parser_prod___AWriteAble___init_awriteable( variable10 /*tkwredefnode5*/,  variable11 /*tkwwritablenode6*/); /*new AWriteAble*/
   variable12 = variable13;
   variable13 =  variable5 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable13 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction115___action, 5839); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction115___action, LOCATE_parser, 5844); nit_exit(1);}
   variable14 =  variable4 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable14 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction115___action, 5841); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction115___action, LOCATE_parser, 5846); nit_exit(1);}
   variable15 =  variable3 /*nodearraylist6*/;
   variable16 = TAG_Bool(( variable15 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable15 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction115___action, 5843); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction115___action, LOCATE_parser, 5848); nit_exit(1);}
   variable16 =  variable2 /*nodearraylist7*/;
   variable17 = TAG_Bool(( variable16 /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable16 /*ptypenode11*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction115___action, 5845); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction115___action, LOCATE_parser, 5850); nit_exit(1);}
   variable18 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable9 /*pdocnode2*/,  NIT_NULL /*null*/,  variable12 /*pablenode4*/,  NIT_NULL /*null*/,  variable13 /*pvisibilitynode8*/,  variable14 /*tkwattrnode9*/,  variable15 /*tattridnode10*/,  variable16 /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable17 = variable18;
   variable1 =  variable17 /*ppropdefnode1*/ /*node_list=*/;
@@ -11342,7 +11355,7 @@ void parser___ReduceAction115___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction115___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction115___init, 5860};
+  struct trace_t trace = {NULL, LOCATE_parser, 5865, LOCATE_parser___ReduceAction115___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction115].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction115].i] = 1;
@@ -11350,7 +11363,7 @@ void parser___ReduceAction115___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction116___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction116___action, 5864};
+  struct trace_t trace = {NULL, LOCATE_parser, 5869, LOCATE_parser___ReduceAction116___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -11380,19 +11393,19 @@ void parser___ReduceAction116___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable7 =  variable6 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable7 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction116___action, 5873); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction116___action, LOCATE_parser, 5878); nit_exit(1);}
   variable8 =  variable5 /*nodearraylist2*/;
   variable9 = TAG_Bool(( variable8 /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable8 /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction116___action, 5875); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction116___action, LOCATE_parser, 5880); nit_exit(1);}
   variable9 =  variable4 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*tkwattrnode7*/==NIT_NULL) || VAL_ISA( variable9 /*tkwattrnode7*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction116___action, 5877); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction116___action, LOCATE_parser, 5882); nit_exit(1);}
   variable10 =  variable3 /*nodearraylist4*/;
   variable11 = TAG_Bool(( variable10 /*tattridnode8*/==NIT_NULL) || VAL_ISA( variable10 /*tattridnode8*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction116___action, 5879); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction116___action, LOCATE_parser, 5884); nit_exit(1);}
   variable11 =  variable2 /*nodearraylist5*/;
   variable12 = TAG_Bool(( variable11 /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable11 /*ptypenode9*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction116___action, 5881); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction116___action, LOCATE_parser, 5886); nit_exit(1);}
   variable13 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable7 /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable8 /*pvisibilitynode6*/,  variable9 /*tkwattrnode7*/,  variable10 /*tattridnode8*/,  variable11 /*ptypenode9*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable12 = variable13;
   variable1 =  variable12 /*ppropdefnode1*/ /*node_list=*/;
@@ -11402,7 +11415,7 @@ void parser___ReduceAction116___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction116___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction116___init, 5896};
+  struct trace_t trace = {NULL, LOCATE_parser, 5901, LOCATE_parser___ReduceAction116___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction116].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction116].i] = 1;
@@ -11410,7 +11423,7 @@ void parser___ReduceAction116___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction117___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction117___action, 5900};
+  struct trace_t trace = {NULL, LOCATE_parser, 5905, LOCATE_parser___ReduceAction117___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -11454,32 +11467,32 @@ void parser___ReduceAction117___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction117___action, 5912); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction117___action, LOCATE_parser, 5917); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable11 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction117___action, 5914); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction117___action, LOCATE_parser, 5919); nit_exit(1);}
   variable13 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable11 /*tkwreadablenode5*/); /*new AReadAble*/
   variable12 = variable13;
   variable13 =  variable7 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable13 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction117___action, 5920); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction117___action, LOCATE_parser, 5925); nit_exit(1);}
   variable15 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable13 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable14 = variable15;
   variable15 =  variable6 /*nodearraylist4*/;
   variable16 = TAG_Bool(( variable15 /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable15 /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction117___action, 5926); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction117___action, LOCATE_parser, 5931); nit_exit(1);}
   variable16 =  variable5 /*nodearraylist5*/;
   variable17 = TAG_Bool(( variable16 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable16 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction117___action, 5928); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction117___action, LOCATE_parser, 5933); nit_exit(1);}
   variable17 =  variable4 /*nodearraylist6*/;
   variable18 = TAG_Bool(( variable17 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable17 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction117___action, 5930); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction117___action, LOCATE_parser, 5935); nit_exit(1);}
   variable18 =  variable3 /*nodearraylist7*/;
   variable19 = TAG_Bool(( variable18 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable18 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction117___action, 5932); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction117___action, LOCATE_parser, 5937); nit_exit(1);}
   variable19 =  variable2 /*nodearraylist8*/;
   variable20 = TAG_Bool(( variable19 /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable19 /*ptypenode13*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction117___action, 5934); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction117___action, LOCATE_parser, 5939); nit_exit(1);}
   variable21 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable10 /*pdocnode2*/,  variable12 /*pablenode3*/,  variable14 /*pablenode6*/,  variable15 /*tkwredefnode9*/,  variable16 /*pvisibilitynode10*/,  variable17 /*tkwattrnode11*/,  variable18 /*tattridnode12*/,  variable19 /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable20 = variable21;
   variable1 =  variable20 /*ppropdefnode1*/ /*node_list=*/;
@@ -11489,7 +11502,7 @@ void parser___ReduceAction117___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction117___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction117___init, 5949};
+  struct trace_t trace = {NULL, LOCATE_parser, 5954, LOCATE_parser___ReduceAction117___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction117].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction117].i] = 1;
@@ -11497,7 +11510,7 @@ void parser___ReduceAction117___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction118___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction118___action, 5953};
+  struct trace_t trace = {NULL, LOCATE_parser, 5958, LOCATE_parser___ReduceAction118___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -11545,35 +11558,35 @@ void parser___ReduceAction118___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction118___action, 5966); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction118___action, LOCATE_parser, 5971); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable12 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction118___action, 5968); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction118___action, LOCATE_parser, 5973); nit_exit(1);}
   variable14 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable12 /*tkwreadablenode5*/); /*new AReadAble*/
   variable13 = variable14;
   variable14 =  variable8 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable14 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction118___action, 5974); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction118___action, LOCATE_parser, 5979); nit_exit(1);}
   variable15 =  variable7 /*nodearraylist4*/;
   variable16 = TAG_Bool(( variable15 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable15 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction118___action, 5976); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction118___action, LOCATE_parser, 5981); nit_exit(1);}
   variable17 = NEW_parser_prod___AWriteAble___init_awriteable( variable14 /*tkwredefnode7*/,  variable15 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable16 = variable17;
   variable17 =  variable6 /*nodearraylist5*/;
   variable18 = TAG_Bool(( variable17 /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable17 /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction118___action, 5982); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction118___action, LOCATE_parser, 5987); nit_exit(1);}
   variable18 =  variable5 /*nodearraylist6*/;
   variable19 = TAG_Bool(( variable18 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable18 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction118___action, 5984); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction118___action, LOCATE_parser, 5989); nit_exit(1);}
   variable19 =  variable4 /*nodearraylist7*/;
   variable20 = TAG_Bool(( variable19 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable19 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction118___action, 5986); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction118___action, LOCATE_parser, 5991); nit_exit(1);}
   variable20 =  variable3 /*nodearraylist8*/;
   variable21 = TAG_Bool(( variable20 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable20 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction118___action, 5988); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction118___action, LOCATE_parser, 5993); nit_exit(1);}
   variable21 =  variable2 /*nodearraylist9*/;
   variable22 = TAG_Bool(( variable21 /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable21 /*ptypenode13*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction118___action, 5990); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction118___action, LOCATE_parser, 5995); nit_exit(1);}
   variable23 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable11 /*pdocnode2*/,  variable13 /*pablenode3*/,  variable16 /*pablenode6*/,  variable17 /*tkwredefnode9*/,  variable18 /*pvisibilitynode10*/,  variable19 /*tkwattrnode11*/,  variable20 /*tattridnode12*/,  variable21 /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable22 = variable23;
   variable1 =  variable22 /*ppropdefnode1*/ /*node_list=*/;
@@ -11583,7 +11596,7 @@ void parser___ReduceAction118___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction118___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction118___init, 6005};
+  struct trace_t trace = {NULL, LOCATE_parser, 6010, LOCATE_parser___ReduceAction118___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction118].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction118].i] = 1;
@@ -11591,7 +11604,7 @@ void parser___ReduceAction118___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction119___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction119___action, 6009};
+  struct trace_t trace = {NULL, LOCATE_parser, 6014, LOCATE_parser___ReduceAction119___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -11630,27 +11643,27 @@ void parser___ReduceAction119___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable9 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction119___action, 6020); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction119___action, LOCATE_parser, 6025); nit_exit(1);}
   variable10 =  variable7 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable10 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction119___action, 6022); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction119___action, LOCATE_parser, 6027); nit_exit(1);}
   variable12 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable10 /*tkwreadablenode5*/); /*new AReadAble*/
   variable11 = variable12;
   variable12 =  variable6 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable12 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction119___action, 6028); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction119___action, LOCATE_parser, 6033); nit_exit(1);}
   variable13 =  variable5 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable13 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction119___action, 6030); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction119___action, LOCATE_parser, 6035); nit_exit(1);}
   variable14 =  variable4 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable14 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction119___action, 6032); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction119___action, LOCATE_parser, 6037); nit_exit(1);}
   variable15 =  variable3 /*nodearraylist6*/;
   variable16 = TAG_Bool(( variable15 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable15 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction119___action, 6034); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction119___action, LOCATE_parser, 6039); nit_exit(1);}
   variable16 =  variable2 /*nodearraylist7*/;
   variable17 = TAG_Bool(( variable16 /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable16 /*ptypenode11*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction119___action, 6036); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction119___action, LOCATE_parser, 6041); nit_exit(1);}
   variable18 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable9 /*pdocnode2*/,  variable11 /*pablenode3*/,  NIT_NULL /*null*/,  variable12 /*tkwredefnode7*/,  variable13 /*pvisibilitynode8*/,  variable14 /*tkwattrnode9*/,  variable15 /*tattridnode10*/,  variable16 /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable17 = variable18;
   variable1 =  variable17 /*ppropdefnode1*/ /*node_list=*/;
@@ -11660,7 +11673,7 @@ void parser___ReduceAction119___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction119___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction119___init, 6051};
+  struct trace_t trace = {NULL, LOCATE_parser, 6056, LOCATE_parser___ReduceAction119___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction119].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction119].i] = 1;
@@ -11668,7 +11681,7 @@ void parser___ReduceAction119___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction120___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction120___action, 6055};
+  struct trace_t trace = {NULL, LOCATE_parser, 6060, LOCATE_parser___ReduceAction120___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -11716,35 +11729,35 @@ void parser___ReduceAction120___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction120___action, 6068); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction120___action, LOCATE_parser, 6073); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable12 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction120___action, 6070); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction120___action, LOCATE_parser, 6075); nit_exit(1);}
   variable13 =  variable8 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable13 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction120___action, 6072); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction120___action, LOCATE_parser, 6077); nit_exit(1);}
   variable15 = NEW_parser_prod___AReadAble___init_areadable( variable12 /*tkwredefnode4*/,  variable13 /*tkwreadablenode5*/); /*new AReadAble*/
   variable14 = variable15;
   variable15 =  variable7 /*nodearraylist4*/;
   variable16 = TAG_Bool(( variable15 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable15 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction120___action, 6078); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction120___action, LOCATE_parser, 6083); nit_exit(1);}
   variable17 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable15 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable16 = variable17;
   variable17 =  variable6 /*nodearraylist5*/;
   variable18 = TAG_Bool(( variable17 /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable17 /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction120___action, 6084); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction120___action, LOCATE_parser, 6089); nit_exit(1);}
   variable18 =  variable5 /*nodearraylist6*/;
   variable19 = TAG_Bool(( variable18 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable18 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction120___action, 6086); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction120___action, LOCATE_parser, 6091); nit_exit(1);}
   variable19 =  variable4 /*nodearraylist7*/;
   variable20 = TAG_Bool(( variable19 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable19 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction120___action, 6088); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction120___action, LOCATE_parser, 6093); nit_exit(1);}
   variable20 =  variable3 /*nodearraylist8*/;
   variable21 = TAG_Bool(( variable20 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable20 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction120___action, 6090); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction120___action, LOCATE_parser, 6095); nit_exit(1);}
   variable21 =  variable2 /*nodearraylist9*/;
   variable22 = TAG_Bool(( variable21 /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable21 /*ptypenode13*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction120___action, 6092); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction120___action, LOCATE_parser, 6097); nit_exit(1);}
   variable23 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable11 /*pdocnode2*/,  variable14 /*pablenode3*/,  variable16 /*pablenode6*/,  variable17 /*tkwredefnode9*/,  variable18 /*pvisibilitynode10*/,  variable19 /*tkwattrnode11*/,  variable20 /*tattridnode12*/,  variable21 /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable22 = variable23;
   variable1 =  variable22 /*ppropdefnode1*/ /*node_list=*/;
@@ -11754,7 +11767,7 @@ void parser___ReduceAction120___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction120___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction120___init, 6107};
+  struct trace_t trace = {NULL, LOCATE_parser, 6112, LOCATE_parser___ReduceAction120___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction120].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction120].i] = 1;
@@ -11762,7 +11775,7 @@ void parser___ReduceAction120___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction121___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction121___action, 6111};
+  struct trace_t trace = {NULL, LOCATE_parser, 6116, LOCATE_parser___ReduceAction121___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -11814,38 +11827,38 @@ void parser___ReduceAction121___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable12 =  variable11 /*nodearraylist1*/;
   variable13 = TAG_Bool(( variable12 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction121___action, 6125); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6130); nit_exit(1);}
   variable13 =  variable10 /*nodearraylist2*/;
   variable14 = TAG_Bool(( variable13 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable13 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction121___action, 6127); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6132); nit_exit(1);}
   variable14 =  variable9 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable14 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction121___action, 6129); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6134); nit_exit(1);}
   variable16 = NEW_parser_prod___AReadAble___init_areadable( variable13 /*tkwredefnode4*/,  variable14 /*tkwreadablenode5*/); /*new AReadAble*/
   variable15 = variable16;
   variable16 =  variable8 /*nodearraylist4*/;
   variable17 = TAG_Bool(( variable16 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable16 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction121___action, 6135); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6140); nit_exit(1);}
   variable17 =  variable7 /*nodearraylist5*/;
   variable18 = TAG_Bool(( variable17 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable17 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction121___action, 6137); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6142); nit_exit(1);}
   variable19 = NEW_parser_prod___AWriteAble___init_awriteable( variable16 /*tkwredefnode7*/,  variable17 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable18 = variable19;
   variable19 =  variable6 /*nodearraylist6*/;
   variable20 = TAG_Bool(( variable19 /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable19 /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction121___action, 6143); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6148); nit_exit(1);}
   variable20 =  variable5 /*nodearraylist7*/;
   variable21 = TAG_Bool(( variable20 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable20 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction121___action, 6145); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6150); nit_exit(1);}
   variable21 =  variable4 /*nodearraylist8*/;
   variable22 = TAG_Bool(( variable21 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable21 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction121___action, 6147); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6152); nit_exit(1);}
   variable22 =  variable3 /*nodearraylist9*/;
   variable23 = TAG_Bool(( variable22 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable22 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction121___action, 6149); nit_exit(1);}
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6154); nit_exit(1);}
   variable23 =  variable2 /*nodearraylist10*/;
   variable24 = TAG_Bool(( variable23 /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable23 /*ptypenode13*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction121___action, 6151); nit_exit(1);}
+  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction121___action, LOCATE_parser, 6156); nit_exit(1);}
   variable25 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable12 /*pdocnode2*/,  variable15 /*pablenode3*/,  variable18 /*pablenode6*/,  variable19 /*tkwredefnode9*/,  variable20 /*pvisibilitynode10*/,  variable21 /*tkwattrnode11*/,  variable22 /*tattridnode12*/,  variable23 /*ptypenode13*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable24 = variable25;
   variable1 =  variable24 /*ppropdefnode1*/ /*node_list=*/;
@@ -11855,7 +11868,7 @@ void parser___ReduceAction121___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction121___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction121___init, 6166};
+  struct trace_t trace = {NULL, LOCATE_parser, 6171, LOCATE_parser___ReduceAction121___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction121].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction121].i] = 1;
@@ -11863,7 +11876,7 @@ void parser___ReduceAction121___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction122___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction122___action, 6170};
+  struct trace_t trace = {NULL, LOCATE_parser, 6175, LOCATE_parser___ReduceAction122___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -11906,30 +11919,30 @@ void parser___ReduceAction122___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction122___action, 6182); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction122___action, LOCATE_parser, 6187); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable11 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction122___action, 6184); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction122___action, LOCATE_parser, 6189); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable12 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction122___action, 6186); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction122___action, LOCATE_parser, 6191); nit_exit(1);}
   variable14 = NEW_parser_prod___AReadAble___init_areadable( variable11 /*tkwredefnode4*/,  variable12 /*tkwreadablenode5*/); /*new AReadAble*/
   variable13 = variable14;
   variable14 =  variable6 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable14 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction122___action, 6192); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction122___action, LOCATE_parser, 6197); nit_exit(1);}
   variable15 =  variable5 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable15 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction122___action, 6194); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction122___action, LOCATE_parser, 6199); nit_exit(1);}
   variable16 =  variable4 /*nodearraylist6*/;
   variable17 = TAG_Bool(( variable16 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable16 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction122___action, 6196); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction122___action, LOCATE_parser, 6201); nit_exit(1);}
   variable17 =  variable3 /*nodearraylist7*/;
   variable18 = TAG_Bool(( variable17 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable17 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction122___action, 6198); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction122___action, LOCATE_parser, 6203); nit_exit(1);}
   variable18 =  variable2 /*nodearraylist8*/;
   variable19 = TAG_Bool(( variable18 /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable18 /*ptypenode11*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction122___action, 6200); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction122___action, LOCATE_parser, 6205); nit_exit(1);}
   variable20 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable10 /*pdocnode2*/,  variable13 /*pablenode3*/,  NIT_NULL /*null*/,  variable14 /*tkwredefnode7*/,  variable15 /*pvisibilitynode8*/,  variable16 /*tkwattrnode9*/,  variable17 /*tattridnode10*/,  variable18 /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable19 = variable20;
   variable1 =  variable19 /*ppropdefnode1*/ /*node_list=*/;
@@ -11939,7 +11952,7 @@ void parser___ReduceAction122___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction122___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction122___init, 6215};
+  struct trace_t trace = {NULL, LOCATE_parser, 6220, LOCATE_parser___ReduceAction122___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction122].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction122].i] = 1;
@@ -11947,7 +11960,7 @@ void parser___ReduceAction122___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction123___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction123___action, 6219};
+  struct trace_t trace = {NULL, LOCATE_parser, 6224, LOCATE_parser___ReduceAction123___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -11986,27 +11999,27 @@ void parser___ReduceAction123___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable9 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction123___action, 6230); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction123___action, LOCATE_parser, 6235); nit_exit(1);}
   variable10 =  variable7 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable10 /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction123___action, 6232); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction123___action, LOCATE_parser, 6237); nit_exit(1);}
   variable12 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable10 /*tkwwritablenode6*/); /*new AWriteAble*/
   variable11 = variable12;
   variable12 =  variable6 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable12 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction123___action, 6238); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction123___action, LOCATE_parser, 6243); nit_exit(1);}
   variable13 =  variable5 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable13 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction123___action, 6240); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction123___action, LOCATE_parser, 6245); nit_exit(1);}
   variable14 =  variable4 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable14 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction123___action, 6242); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction123___action, LOCATE_parser, 6247); nit_exit(1);}
   variable15 =  variable3 /*nodearraylist6*/;
   variable16 = TAG_Bool(( variable15 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable15 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction123___action, 6244); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction123___action, LOCATE_parser, 6249); nit_exit(1);}
   variable16 =  variable2 /*nodearraylist7*/;
   variable17 = TAG_Bool(( variable16 /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable16 /*ptypenode11*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction123___action, 6246); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction123___action, LOCATE_parser, 6251); nit_exit(1);}
   variable18 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable9 /*pdocnode2*/,  NIT_NULL /*null*/,  variable11 /*pablenode4*/,  variable12 /*tkwredefnode7*/,  variable13 /*pvisibilitynode8*/,  variable14 /*tkwattrnode9*/,  variable15 /*tattridnode10*/,  variable16 /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable17 = variable18;
   variable1 =  variable17 /*ppropdefnode1*/ /*node_list=*/;
@@ -12016,7 +12029,7 @@ void parser___ReduceAction123___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction123___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction123___init, 6261};
+  struct trace_t trace = {NULL, LOCATE_parser, 6266, LOCATE_parser___ReduceAction123___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction123].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction123].i] = 1;
@@ -12024,7 +12037,7 @@ void parser___ReduceAction123___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction124___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction124___action, 6265};
+  struct trace_t trace = {NULL, LOCATE_parser, 6270, LOCATE_parser___ReduceAction124___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -12067,30 +12080,30 @@ void parser___ReduceAction124___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction124___action, 6277); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction124___action, LOCATE_parser, 6282); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable11 /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction124___action, 6279); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction124___action, LOCATE_parser, 6284); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable12 /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction124___action, 6281); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction124___action, LOCATE_parser, 6286); nit_exit(1);}
   variable14 = NEW_parser_prod___AWriteAble___init_awriteable( variable11 /*tkwredefnode5*/,  variable12 /*tkwwritablenode6*/); /*new AWriteAble*/
   variable13 = variable14;
   variable14 =  variable6 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable14 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction124___action, 6287); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction124___action, LOCATE_parser, 6292); nit_exit(1);}
   variable15 =  variable5 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable15 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction124___action, 6289); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction124___action, LOCATE_parser, 6294); nit_exit(1);}
   variable16 =  variable4 /*nodearraylist6*/;
   variable17 = TAG_Bool(( variable16 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable16 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction124___action, 6291); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction124___action, LOCATE_parser, 6296); nit_exit(1);}
   variable17 =  variable3 /*nodearraylist7*/;
   variable18 = TAG_Bool(( variable17 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable17 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction124___action, 6293); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction124___action, LOCATE_parser, 6298); nit_exit(1);}
   variable18 =  variable2 /*nodearraylist8*/;
   variable19 = TAG_Bool(( variable18 /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable18 /*ptypenode11*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction124___action, 6295); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction124___action, LOCATE_parser, 6300); nit_exit(1);}
   variable20 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable10 /*pdocnode2*/,  NIT_NULL /*null*/,  variable13 /*pablenode4*/,  variable14 /*tkwredefnode7*/,  variable15 /*pvisibilitynode8*/,  variable16 /*tkwattrnode9*/,  variable17 /*tattridnode10*/,  variable18 /*ptypenode11*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable19 = variable20;
   variable1 =  variable19 /*ppropdefnode1*/ /*node_list=*/;
@@ -12100,7 +12113,7 @@ void parser___ReduceAction124___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction124___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction124___init, 6310};
+  struct trace_t trace = {NULL, LOCATE_parser, 6315, LOCATE_parser___ReduceAction124___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction124].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction124].i] = 1;
@@ -12108,7 +12121,7 @@ void parser___ReduceAction124___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction125___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction125___action, 6314};
+  struct trace_t trace = {NULL, LOCATE_parser, 6319, LOCATE_parser___ReduceAction125___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -12142,22 +12155,22 @@ void parser___ReduceAction125___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable7 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction125___action, 6324); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction125___action, LOCATE_parser, 6329); nit_exit(1);}
   variable9 =  variable6 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable9 /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction125___action, 6326); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction125___action, LOCATE_parser, 6331); nit_exit(1);}
   variable10 =  variable5 /*nodearraylist3*/;
   variable11 = TAG_Bool(( variable10 /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable10 /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction125___action, 6328); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction125___action, LOCATE_parser, 6333); nit_exit(1);}
   variable11 =  variable4 /*nodearraylist4*/;
   variable12 = TAG_Bool(( variable11 /*tkwattrnode7*/==NIT_NULL) || VAL_ISA( variable11 /*tkwattrnode7*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction125___action, 6330); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction125___action, LOCATE_parser, 6335); nit_exit(1);}
   variable12 =  variable3 /*nodearraylist5*/;
   variable13 = TAG_Bool(( variable12 /*tattridnode8*/==NIT_NULL) || VAL_ISA( variable12 /*tattridnode8*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction125___action, 6332); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction125___action, LOCATE_parser, 6337); nit_exit(1);}
   variable13 =  variable2 /*nodearraylist6*/;
   variable14 = TAG_Bool(( variable13 /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable13 /*ptypenode9*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction125___action, 6334); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction125___action, LOCATE_parser, 6339); nit_exit(1);}
   variable15 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable8 /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable9 /*tkwredefnode5*/,  variable10 /*pvisibilitynode6*/,  variable11 /*tkwattrnode7*/,  variable12 /*tattridnode8*/,  variable13 /*ptypenode9*/,  NIT_NULL /*null*/); /*new AAttrPropdef*/
   variable14 = variable15;
   variable1 =  variable14 /*ppropdefnode1*/ /*node_list=*/;
@@ -12167,7 +12180,7 @@ void parser___ReduceAction125___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction125___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction125___init, 6349};
+  struct trace_t trace = {NULL, LOCATE_parser, 6354, LOCATE_parser___ReduceAction125___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction125].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction125].i] = 1;
@@ -12175,7 +12188,7 @@ void parser___ReduceAction125___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction126___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction126___action, 6353};
+  struct trace_t trace = {NULL, LOCATE_parser, 6358, LOCATE_parser___ReduceAction126___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -12221,29 +12234,29 @@ void parser___ReduceAction126___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction126___action, 6366); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction126___action, LOCATE_parser, 6371); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable12 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction126___action, 6368); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction126___action, LOCATE_parser, 6373); nit_exit(1);}
   variable14 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable12 /*tkwreadablenode5*/); /*new AReadAble*/
   variable13 = variable14;
   variable14 =  variable8 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable14 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction126___action, 6374); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction126___action, LOCATE_parser, 6379); nit_exit(1);}
   variable16 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable14 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable15 = variable16;
   variable16 =  variable7 /*nodearraylist4*/;
   variable17 = TAG_Bool(( variable16 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable16 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction126___action, 6380); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction126___action, LOCATE_parser, 6385); nit_exit(1);}
   variable17 =  variable6 /*nodearraylist5*/;
   variable18 = TAG_Bool(( variable17 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable17 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction126___action, 6382); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction126___action, LOCATE_parser, 6387); nit_exit(1);}
   variable18 =  variable5 /*nodearraylist6*/;
   variable19 = TAG_Bool(( variable18 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable18 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction126___action, 6384); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction126___action, LOCATE_parser, 6389); nit_exit(1);}
   variable19 =  variable2 /*nodearraylist9*/;
   variable20 = TAG_Bool(( variable19 /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable19 /*pexprnode14*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction126___action, 6386); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction126___action, LOCATE_parser, 6391); nit_exit(1);}
   variable21 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable11 /*pdocnode2*/,  variable13 /*pablenode3*/,  variable15 /*pablenode6*/,  NIT_NULL /*null*/,  variable16 /*pvisibilitynode10*/,  variable17 /*tkwattrnode11*/,  variable18 /*tattridnode12*/,  NIT_NULL /*null*/,  variable19 /*pexprnode14*/); /*new AAttrPropdef*/
   variable20 = variable21;
   variable1 =  variable20 /*ppropdefnode1*/ /*node_list=*/;
@@ -12253,7 +12266,7 @@ void parser___ReduceAction126___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction126___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction126___init, 6401};
+  struct trace_t trace = {NULL, LOCATE_parser, 6406, LOCATE_parser___ReduceAction126___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction126].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction126].i] = 1;
@@ -12261,7 +12274,7 @@ void parser___ReduceAction126___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction127___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction127___action, 6405};
+  struct trace_t trace = {NULL, LOCATE_parser, 6410, LOCATE_parser___ReduceAction127___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -12311,32 +12324,32 @@ void parser___ReduceAction127___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable12 =  variable11 /*nodearraylist1*/;
   variable13 = TAG_Bool(( variable12 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction127___action, 6419); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction127___action, LOCATE_parser, 6424); nit_exit(1);}
   variable13 =  variable10 /*nodearraylist2*/;
   variable14 = TAG_Bool(( variable13 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable13 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction127___action, 6421); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction127___action, LOCATE_parser, 6426); nit_exit(1);}
   variable15 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable13 /*tkwreadablenode5*/); /*new AReadAble*/
   variable14 = variable15;
   variable15 =  variable9 /*nodearraylist3*/;
   variable16 = TAG_Bool(( variable15 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable15 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction127___action, 6427); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction127___action, LOCATE_parser, 6432); nit_exit(1);}
   variable16 =  variable8 /*nodearraylist4*/;
   variable17 = TAG_Bool(( variable16 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable16 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction127___action, 6429); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction127___action, LOCATE_parser, 6434); nit_exit(1);}
   variable18 = NEW_parser_prod___AWriteAble___init_awriteable( variable15 /*tkwredefnode7*/,  variable16 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable17 = variable18;
   variable18 =  variable7 /*nodearraylist5*/;
   variable19 = TAG_Bool(( variable18 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable18 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction127___action, 6435); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction127___action, LOCATE_parser, 6440); nit_exit(1);}
   variable19 =  variable6 /*nodearraylist6*/;
   variable20 = TAG_Bool(( variable19 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable19 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction127___action, 6437); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction127___action, LOCATE_parser, 6442); nit_exit(1);}
   variable20 =  variable5 /*nodearraylist7*/;
   variable21 = TAG_Bool(( variable20 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable20 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction127___action, 6439); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction127___action, LOCATE_parser, 6444); nit_exit(1);}
   variable21 =  variable2 /*nodearraylist10*/;
   variable22 = TAG_Bool(( variable21 /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable21 /*pexprnode14*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction127___action, 6441); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction127___action, LOCATE_parser, 6446); nit_exit(1);}
   variable23 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable12 /*pdocnode2*/,  variable14 /*pablenode3*/,  variable17 /*pablenode6*/,  NIT_NULL /*null*/,  variable18 /*pvisibilitynode10*/,  variable19 /*tkwattrnode11*/,  variable20 /*tattridnode12*/,  NIT_NULL /*null*/,  variable21 /*pexprnode14*/); /*new AAttrPropdef*/
   variable22 = variable23;
   variable1 =  variable22 /*ppropdefnode1*/ /*node_list=*/;
@@ -12346,7 +12359,7 @@ void parser___ReduceAction127___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction127___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction127___init, 6456};
+  struct trace_t trace = {NULL, LOCATE_parser, 6461, LOCATE_parser___ReduceAction127___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction127].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction127].i] = 1;
@@ -12354,7 +12367,7 @@ void parser___ReduceAction127___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction128___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction128___action, 6460};
+  struct trace_t trace = {NULL, LOCATE_parser, 6465, LOCATE_parser___ReduceAction128___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -12395,24 +12408,24 @@ void parser___ReduceAction128___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction128___action, 6472); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction128___action, LOCATE_parser, 6477); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable11 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction128___action, 6474); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction128___action, LOCATE_parser, 6479); nit_exit(1);}
   variable13 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable11 /*tkwreadablenode5*/); /*new AReadAble*/
   variable12 = variable13;
   variable13 =  variable7 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable13 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction128___action, 6480); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction128___action, LOCATE_parser, 6485); nit_exit(1);}
   variable14 =  variable6 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable14 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction128___action, 6482); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction128___action, LOCATE_parser, 6487); nit_exit(1);}
   variable15 =  variable5 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable15 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction128___action, 6484); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction128___action, LOCATE_parser, 6489); nit_exit(1);}
   variable16 =  variable2 /*nodearraylist8*/;
   variable17 = TAG_Bool(( variable16 /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable16 /*pexprnode12*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction128___action, 6486); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction128___action, LOCATE_parser, 6491); nit_exit(1);}
   variable18 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable10 /*pdocnode2*/,  variable12 /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable13 /*pvisibilitynode8*/,  variable14 /*tkwattrnode9*/,  variable15 /*tattridnode10*/,  NIT_NULL /*null*/,  variable16 /*pexprnode12*/); /*new AAttrPropdef*/
   variable17 = variable18;
   variable1 =  variable17 /*ppropdefnode1*/ /*node_list=*/;
@@ -12422,7 +12435,7 @@ void parser___ReduceAction128___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction128___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction128___init, 6501};
+  struct trace_t trace = {NULL, LOCATE_parser, 6506, LOCATE_parser___ReduceAction128___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction128].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction128].i] = 1;
@@ -12430,7 +12443,7 @@ void parser___ReduceAction128___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction129___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction129___action, 6505};
+  struct trace_t trace = {NULL, LOCATE_parser, 6510, LOCATE_parser___ReduceAction129___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -12480,32 +12493,32 @@ void parser___ReduceAction129___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable12 =  variable11 /*nodearraylist1*/;
   variable13 = TAG_Bool(( variable12 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction129___action, 6519); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction129___action, LOCATE_parser, 6524); nit_exit(1);}
   variable13 =  variable10 /*nodearraylist2*/;
   variable14 = TAG_Bool(( variable13 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable13 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction129___action, 6521); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction129___action, LOCATE_parser, 6526); nit_exit(1);}
   variable14 =  variable9 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable14 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction129___action, 6523); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction129___action, LOCATE_parser, 6528); nit_exit(1);}
   variable16 = NEW_parser_prod___AReadAble___init_areadable( variable13 /*tkwredefnode4*/,  variable14 /*tkwreadablenode5*/); /*new AReadAble*/
   variable15 = variable16;
   variable16 =  variable8 /*nodearraylist4*/;
   variable17 = TAG_Bool(( variable16 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable16 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction129___action, 6529); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction129___action, LOCATE_parser, 6534); nit_exit(1);}
   variable18 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable16 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable17 = variable18;
   variable18 =  variable7 /*nodearraylist5*/;
   variable19 = TAG_Bool(( variable18 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable18 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction129___action, 6535); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction129___action, LOCATE_parser, 6540); nit_exit(1);}
   variable19 =  variable6 /*nodearraylist6*/;
   variable20 = TAG_Bool(( variable19 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable19 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction129___action, 6537); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction129___action, LOCATE_parser, 6542); nit_exit(1);}
   variable20 =  variable5 /*nodearraylist7*/;
   variable21 = TAG_Bool(( variable20 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable20 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction129___action, 6539); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction129___action, LOCATE_parser, 6544); nit_exit(1);}
   variable21 =  variable2 /*nodearraylist10*/;
   variable22 = TAG_Bool(( variable21 /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable21 /*pexprnode14*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction129___action, 6541); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction129___action, LOCATE_parser, 6546); nit_exit(1);}
   variable23 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable12 /*pdocnode2*/,  variable15 /*pablenode3*/,  variable17 /*pablenode6*/,  NIT_NULL /*null*/,  variable18 /*pvisibilitynode10*/,  variable19 /*tkwattrnode11*/,  variable20 /*tattridnode12*/,  NIT_NULL /*null*/,  variable21 /*pexprnode14*/); /*new AAttrPropdef*/
   variable22 = variable23;
   variable1 =  variable22 /*ppropdefnode1*/ /*node_list=*/;
@@ -12515,7 +12528,7 @@ void parser___ReduceAction129___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction129___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction129___init, 6556};
+  struct trace_t trace = {NULL, LOCATE_parser, 6561, LOCATE_parser___ReduceAction129___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction129].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction129].i] = 1;
@@ -12523,7 +12536,7 @@ void parser___ReduceAction129___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction130___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction130___action, 6560};
+  struct trace_t trace = {NULL, LOCATE_parser, 6565, LOCATE_parser___ReduceAction130___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -12577,35 +12590,35 @@ void parser___ReduceAction130___action(val_t  self, val_t  param0) {
   variable12 = variable13;
   variable13 =  variable12 /*nodearraylist1*/;
   variable14 = TAG_Bool(( variable13 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable13 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction130___action, 6575); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6580); nit_exit(1);}
   variable14 =  variable11 /*nodearraylist2*/;
   variable15 = TAG_Bool(( variable14 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable14 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction130___action, 6577); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6582); nit_exit(1);}
   variable15 =  variable10 /*nodearraylist3*/;
   variable16 = TAG_Bool(( variable15 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable15 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction130___action, 6579); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6584); nit_exit(1);}
   variable17 = NEW_parser_prod___AReadAble___init_areadable( variable14 /*tkwredefnode4*/,  variable15 /*tkwreadablenode5*/); /*new AReadAble*/
   variable16 = variable17;
   variable17 =  variable9 /*nodearraylist4*/;
   variable18 = TAG_Bool(( variable17 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable17 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction130___action, 6585); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6590); nit_exit(1);}
   variable18 =  variable8 /*nodearraylist5*/;
   variable19 = TAG_Bool(( variable18 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable18 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction130___action, 6587); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6592); nit_exit(1);}
   variable20 = NEW_parser_prod___AWriteAble___init_awriteable( variable17 /*tkwredefnode7*/,  variable18 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable19 = variable20;
   variable20 =  variable7 /*nodearraylist6*/;
   variable21 = TAG_Bool(( variable20 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable20 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction130___action, 6593); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6598); nit_exit(1);}
   variable21 =  variable6 /*nodearraylist7*/;
   variable22 = TAG_Bool(( variable21 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable21 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction130___action, 6595); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6600); nit_exit(1);}
   variable22 =  variable5 /*nodearraylist8*/;
   variable23 = TAG_Bool(( variable22 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable22 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction130___action, 6597); nit_exit(1);}
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6602); nit_exit(1);}
   variable23 =  variable2 /*nodearraylist11*/;
   variable24 = TAG_Bool(( variable23 /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable23 /*pexprnode14*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction130___action, 6599); nit_exit(1);}
+  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction130___action, LOCATE_parser, 6604); nit_exit(1);}
   variable25 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable13 /*pdocnode2*/,  variable16 /*pablenode3*/,  variable19 /*pablenode6*/,  NIT_NULL /*null*/,  variable20 /*pvisibilitynode10*/,  variable21 /*tkwattrnode11*/,  variable22 /*tattridnode12*/,  NIT_NULL /*null*/,  variable23 /*pexprnode14*/); /*new AAttrPropdef*/
   variable24 = variable25;
   variable1 =  variable24 /*ppropdefnode1*/ /*node_list=*/;
@@ -12615,7 +12628,7 @@ void parser___ReduceAction130___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction130___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction130___init, 6614};
+  struct trace_t trace = {NULL, LOCATE_parser, 6619, LOCATE_parser___ReduceAction130___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction130].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction130].i] = 1;
@@ -12623,7 +12636,7 @@ void parser___ReduceAction130___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction131___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction131___action, 6618};
+  struct trace_t trace = {NULL, LOCATE_parser, 6623, LOCATE_parser___ReduceAction131___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -12668,27 +12681,27 @@ void parser___ReduceAction131___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction131___action, 6631); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction131___action, LOCATE_parser, 6636); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable12 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction131___action, 6633); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction131___action, LOCATE_parser, 6638); nit_exit(1);}
   variable13 =  variable8 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable13 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction131___action, 6635); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction131___action, LOCATE_parser, 6640); nit_exit(1);}
   variable15 = NEW_parser_prod___AReadAble___init_areadable( variable12 /*tkwredefnode4*/,  variable13 /*tkwreadablenode5*/); /*new AReadAble*/
   variable14 = variable15;
   variable15 =  variable7 /*nodearraylist4*/;
   variable16 = TAG_Bool(( variable15 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable15 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction131___action, 6641); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction131___action, LOCATE_parser, 6646); nit_exit(1);}
   variable16 =  variable6 /*nodearraylist5*/;
   variable17 = TAG_Bool(( variable16 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable16 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction131___action, 6643); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction131___action, LOCATE_parser, 6648); nit_exit(1);}
   variable17 =  variable5 /*nodearraylist6*/;
   variable18 = TAG_Bool(( variable17 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable17 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction131___action, 6645); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction131___action, LOCATE_parser, 6650); nit_exit(1);}
   variable18 =  variable2 /*nodearraylist9*/;
   variable19 = TAG_Bool(( variable18 /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable18 /*pexprnode12*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction131___action, 6647); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction131___action, LOCATE_parser, 6652); nit_exit(1);}
   variable20 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable11 /*pdocnode2*/,  variable14 /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable15 /*pvisibilitynode8*/,  variable16 /*tkwattrnode9*/,  variable17 /*tattridnode10*/,  NIT_NULL /*null*/,  variable18 /*pexprnode12*/); /*new AAttrPropdef*/
   variable19 = variable20;
   variable1 =  variable19 /*ppropdefnode1*/ /*node_list=*/;
@@ -12698,7 +12711,7 @@ void parser___ReduceAction131___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction131___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction131___init, 6662};
+  struct trace_t trace = {NULL, LOCATE_parser, 6667, LOCATE_parser___ReduceAction131___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction131].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction131].i] = 1;
@@ -12706,7 +12719,7 @@ void parser___ReduceAction131___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction132___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction132___action, 6666};
+  struct trace_t trace = {NULL, LOCATE_parser, 6671, LOCATE_parser___ReduceAction132___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -12747,24 +12760,24 @@ void parser___ReduceAction132___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction132___action, 6678); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction132___action, LOCATE_parser, 6683); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable11 /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction132___action, 6680); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction132___action, LOCATE_parser, 6685); nit_exit(1);}
   variable13 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable11 /*tkwwritablenode6*/); /*new AWriteAble*/
   variable12 = variable13;
   variable13 =  variable7 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable13 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction132___action, 6686); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction132___action, LOCATE_parser, 6691); nit_exit(1);}
   variable14 =  variable6 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable14 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction132___action, 6688); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction132___action, LOCATE_parser, 6693); nit_exit(1);}
   variable15 =  variable5 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable15 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction132___action, 6690); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction132___action, LOCATE_parser, 6695); nit_exit(1);}
   variable16 =  variable2 /*nodearraylist8*/;
   variable17 = TAG_Bool(( variable16 /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable16 /*pexprnode12*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction132___action, 6692); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction132___action, LOCATE_parser, 6697); nit_exit(1);}
   variable18 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable10 /*pdocnode2*/,  NIT_NULL /*null*/,  variable12 /*pablenode4*/,  NIT_NULL /*null*/,  variable13 /*pvisibilitynode8*/,  variable14 /*tkwattrnode9*/,  variable15 /*tattridnode10*/,  NIT_NULL /*null*/,  variable16 /*pexprnode12*/); /*new AAttrPropdef*/
   variable17 = variable18;
   variable1 =  variable17 /*ppropdefnode1*/ /*node_list=*/;
@@ -12774,7 +12787,7 @@ void parser___ReduceAction132___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction132___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction132___init, 6707};
+  struct trace_t trace = {NULL, LOCATE_parser, 6712, LOCATE_parser___ReduceAction132___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction132].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction132].i] = 1;
@@ -12782,7 +12795,7 @@ void parser___ReduceAction132___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction133___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction133___action, 6711};
+  struct trace_t trace = {NULL, LOCATE_parser, 6716, LOCATE_parser___ReduceAction133___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -12827,27 +12840,27 @@ void parser___ReduceAction133___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction133___action, 6724); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction133___action, LOCATE_parser, 6729); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable12 /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction133___action, 6726); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction133___action, LOCATE_parser, 6731); nit_exit(1);}
   variable13 =  variable8 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable13 /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction133___action, 6728); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction133___action, LOCATE_parser, 6733); nit_exit(1);}
   variable15 = NEW_parser_prod___AWriteAble___init_awriteable( variable12 /*tkwredefnode5*/,  variable13 /*tkwwritablenode6*/); /*new AWriteAble*/
   variable14 = variable15;
   variable15 =  variable7 /*nodearraylist4*/;
   variable16 = TAG_Bool(( variable15 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable15 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction133___action, 6734); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction133___action, LOCATE_parser, 6739); nit_exit(1);}
   variable16 =  variable6 /*nodearraylist5*/;
   variable17 = TAG_Bool(( variable16 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable16 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction133___action, 6736); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction133___action, LOCATE_parser, 6741); nit_exit(1);}
   variable17 =  variable5 /*nodearraylist6*/;
   variable18 = TAG_Bool(( variable17 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable17 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction133___action, 6738); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction133___action, LOCATE_parser, 6743); nit_exit(1);}
   variable18 =  variable2 /*nodearraylist9*/;
   variable19 = TAG_Bool(( variable18 /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable18 /*pexprnode12*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction133___action, 6740); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction133___action, LOCATE_parser, 6745); nit_exit(1);}
   variable20 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable11 /*pdocnode2*/,  NIT_NULL /*null*/,  variable14 /*pablenode4*/,  NIT_NULL /*null*/,  variable15 /*pvisibilitynode8*/,  variable16 /*tkwattrnode9*/,  variable17 /*tattridnode10*/,  NIT_NULL /*null*/,  variable18 /*pexprnode12*/); /*new AAttrPropdef*/
   variable19 = variable20;
   variable1 =  variable19 /*ppropdefnode1*/ /*node_list=*/;
@@ -12857,7 +12870,7 @@ void parser___ReduceAction133___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction133___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction133___init, 6755};
+  struct trace_t trace = {NULL, LOCATE_parser, 6760, LOCATE_parser___ReduceAction133___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction133].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction133].i] = 1;
@@ -12865,7 +12878,7 @@ void parser___ReduceAction133___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction134___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction134___action, 6759};
+  struct trace_t trace = {NULL, LOCATE_parser, 6764, LOCATE_parser___ReduceAction134___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -12901,19 +12914,19 @@ void parser___ReduceAction134___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable9 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction134___action, 6770); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction134___action, LOCATE_parser, 6775); nit_exit(1);}
   variable10 =  variable7 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable10 /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction134___action, 6772); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction134___action, LOCATE_parser, 6777); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*tkwattrnode7*/==NIT_NULL) || VAL_ISA( variable11 /*tkwattrnode7*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction134___action, 6774); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction134___action, LOCATE_parser, 6779); nit_exit(1);}
   variable12 =  variable5 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*tattridnode8*/==NIT_NULL) || VAL_ISA( variable12 /*tattridnode8*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction134___action, 6776); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction134___action, LOCATE_parser, 6781); nit_exit(1);}
   variable13 =  variable2 /*nodearraylist7*/;
   variable14 = TAG_Bool(( variable13 /*pexprnode10*/==NIT_NULL) || VAL_ISA( variable13 /*pexprnode10*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction134___action, 6778); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction134___action, LOCATE_parser, 6783); nit_exit(1);}
   variable15 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable9 /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable10 /*pvisibilitynode6*/,  variable11 /*tkwattrnode7*/,  variable12 /*tattridnode8*/,  NIT_NULL /*null*/,  variable13 /*pexprnode10*/); /*new AAttrPropdef*/
   variable14 = variable15;
   variable1 =  variable14 /*ppropdefnode1*/ /*node_list=*/;
@@ -12923,7 +12936,7 @@ void parser___ReduceAction134___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction134___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction134___init, 6793};
+  struct trace_t trace = {NULL, LOCATE_parser, 6798, LOCATE_parser___ReduceAction134___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction134].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction134].i] = 1;
@@ -12931,7 +12944,7 @@ void parser___ReduceAction134___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction135___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction135___action, 6797};
+  struct trace_t trace = {NULL, LOCATE_parser, 6802, LOCATE_parser___ReduceAction135___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -12981,32 +12994,32 @@ void parser___ReduceAction135___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable12 =  variable11 /*nodearraylist1*/;
   variable13 = TAG_Bool(( variable12 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction135___action, 6811); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction135___action, LOCATE_parser, 6816); nit_exit(1);}
   variable13 =  variable10 /*nodearraylist2*/;
   variable14 = TAG_Bool(( variable13 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable13 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction135___action, 6813); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction135___action, LOCATE_parser, 6818); nit_exit(1);}
   variable15 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable13 /*tkwreadablenode5*/); /*new AReadAble*/
   variable14 = variable15;
   variable15 =  variable9 /*nodearraylist3*/;
   variable16 = TAG_Bool(( variable15 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable15 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction135___action, 6819); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction135___action, LOCATE_parser, 6824); nit_exit(1);}
   variable17 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable15 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable16 = variable17;
   variable17 =  variable8 /*nodearraylist4*/;
   variable18 = TAG_Bool(( variable17 /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable17 /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction135___action, 6825); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction135___action, LOCATE_parser, 6830); nit_exit(1);}
   variable18 =  variable7 /*nodearraylist5*/;
   variable19 = TAG_Bool(( variable18 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable18 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction135___action, 6827); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction135___action, LOCATE_parser, 6832); nit_exit(1);}
   variable19 =  variable6 /*nodearraylist6*/;
   variable20 = TAG_Bool(( variable19 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable19 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction135___action, 6829); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction135___action, LOCATE_parser, 6834); nit_exit(1);}
   variable20 =  variable5 /*nodearraylist7*/;
   variable21 = TAG_Bool(( variable20 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable20 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction135___action, 6831); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction135___action, LOCATE_parser, 6836); nit_exit(1);}
   variable21 =  variable2 /*nodearraylist10*/;
   variable22 = TAG_Bool(( variable21 /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable21 /*pexprnode14*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction135___action, 6833); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction135___action, LOCATE_parser, 6838); nit_exit(1);}
   variable23 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable12 /*pdocnode2*/,  variable14 /*pablenode3*/,  variable16 /*pablenode6*/,  variable17 /*tkwredefnode9*/,  variable18 /*pvisibilitynode10*/,  variable19 /*tkwattrnode11*/,  variable20 /*tattridnode12*/,  NIT_NULL /*null*/,  variable21 /*pexprnode14*/); /*new AAttrPropdef*/
   variable22 = variable23;
   variable1 =  variable22 /*ppropdefnode1*/ /*node_list=*/;
@@ -13016,7 +13029,7 @@ void parser___ReduceAction135___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction135___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction135___init, 6848};
+  struct trace_t trace = {NULL, LOCATE_parser, 6853, LOCATE_parser___ReduceAction135___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction135].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction135].i] = 1;
@@ -13024,7 +13037,7 @@ void parser___ReduceAction135___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction136___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction136___action, 6852};
+  struct trace_t trace = {NULL, LOCATE_parser, 6857, LOCATE_parser___ReduceAction136___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -13078,35 +13091,35 @@ void parser___ReduceAction136___action(val_t  self, val_t  param0) {
   variable12 = variable13;
   variable13 =  variable12 /*nodearraylist1*/;
   variable14 = TAG_Bool(( variable13 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable13 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction136___action, 6867); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction136___action, LOCATE_parser, 6872); nit_exit(1);}
   variable14 =  variable11 /*nodearraylist2*/;
   variable15 = TAG_Bool(( variable14 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable14 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction136___action, 6869); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction136___action, LOCATE_parser, 6874); nit_exit(1);}
   variable16 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable14 /*tkwreadablenode5*/); /*new AReadAble*/
   variable15 = variable16;
   variable16 =  variable10 /*nodearraylist3*/;
   variable17 = TAG_Bool(( variable16 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable16 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction136___action, 6875); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction136___action, LOCATE_parser, 6880); nit_exit(1);}
   variable17 =  variable9 /*nodearraylist4*/;
   variable18 = TAG_Bool(( variable17 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable17 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction136___action, 6877); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction136___action, LOCATE_parser, 6882); nit_exit(1);}
   variable19 = NEW_parser_prod___AWriteAble___init_awriteable( variable16 /*tkwredefnode7*/,  variable17 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable18 = variable19;
   variable19 =  variable8 /*nodearraylist5*/;
   variable20 = TAG_Bool(( variable19 /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable19 /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction136___action, 6883); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction136___action, LOCATE_parser, 6888); nit_exit(1);}
   variable20 =  variable7 /*nodearraylist6*/;
   variable21 = TAG_Bool(( variable20 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable20 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction136___action, 6885); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction136___action, LOCATE_parser, 6890); nit_exit(1);}
   variable21 =  variable6 /*nodearraylist7*/;
   variable22 = TAG_Bool(( variable21 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable21 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction136___action, 6887); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction136___action, LOCATE_parser, 6892); nit_exit(1);}
   variable22 =  variable5 /*nodearraylist8*/;
   variable23 = TAG_Bool(( variable22 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable22 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction136___action, 6889); nit_exit(1);}
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction136___action, LOCATE_parser, 6894); nit_exit(1);}
   variable23 =  variable2 /*nodearraylist11*/;
   variable24 = TAG_Bool(( variable23 /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable23 /*pexprnode14*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction136___action, 6891); nit_exit(1);}
+  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction136___action, LOCATE_parser, 6896); nit_exit(1);}
   variable25 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable13 /*pdocnode2*/,  variable15 /*pablenode3*/,  variable18 /*pablenode6*/,  variable19 /*tkwredefnode9*/,  variable20 /*pvisibilitynode10*/,  variable21 /*tkwattrnode11*/,  variable22 /*tattridnode12*/,  NIT_NULL /*null*/,  variable23 /*pexprnode14*/); /*new AAttrPropdef*/
   variable24 = variable25;
   variable1 =  variable24 /*ppropdefnode1*/ /*node_list=*/;
@@ -13116,7 +13129,7 @@ void parser___ReduceAction136___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction136___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction136___init, 6906};
+  struct trace_t trace = {NULL, LOCATE_parser, 6911, LOCATE_parser___ReduceAction136___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction136].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction136].i] = 1;
@@ -13124,7 +13137,7 @@ void parser___ReduceAction136___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction137___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction137___action, 6910};
+  struct trace_t trace = {NULL, LOCATE_parser, 6915, LOCATE_parser___ReduceAction137___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -13169,27 +13182,27 @@ void parser___ReduceAction137___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction137___action, 6923); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction137___action, LOCATE_parser, 6928); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable12 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction137___action, 6925); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction137___action, LOCATE_parser, 6930); nit_exit(1);}
   variable14 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable12 /*tkwreadablenode5*/); /*new AReadAble*/
   variable13 = variable14;
   variable14 =  variable8 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable14 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction137___action, 6931); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction137___action, LOCATE_parser, 6936); nit_exit(1);}
   variable15 =  variable7 /*nodearraylist4*/;
   variable16 = TAG_Bool(( variable15 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable15 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction137___action, 6933); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction137___action, LOCATE_parser, 6938); nit_exit(1);}
   variable16 =  variable6 /*nodearraylist5*/;
   variable17 = TAG_Bool(( variable16 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable16 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction137___action, 6935); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction137___action, LOCATE_parser, 6940); nit_exit(1);}
   variable17 =  variable5 /*nodearraylist6*/;
   variable18 = TAG_Bool(( variable17 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable17 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction137___action, 6937); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction137___action, LOCATE_parser, 6942); nit_exit(1);}
   variable18 =  variable2 /*nodearraylist9*/;
   variable19 = TAG_Bool(( variable18 /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable18 /*pexprnode12*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction137___action, 6939); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction137___action, LOCATE_parser, 6944); nit_exit(1);}
   variable20 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable11 /*pdocnode2*/,  variable13 /*pablenode3*/,  NIT_NULL /*null*/,  variable14 /*tkwredefnode7*/,  variable15 /*pvisibilitynode8*/,  variable16 /*tkwattrnode9*/,  variable17 /*tattridnode10*/,  NIT_NULL /*null*/,  variable18 /*pexprnode12*/); /*new AAttrPropdef*/
   variable19 = variable20;
   variable1 =  variable19 /*ppropdefnode1*/ /*node_list=*/;
@@ -13199,7 +13212,7 @@ void parser___ReduceAction137___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction137___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction137___init, 6954};
+  struct trace_t trace = {NULL, LOCATE_parser, 6959, LOCATE_parser___ReduceAction137___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction137].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction137].i] = 1;
@@ -13207,7 +13220,7 @@ void parser___ReduceAction137___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction138___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction138___action, 6958};
+  struct trace_t trace = {NULL, LOCATE_parser, 6963, LOCATE_parser___ReduceAction138___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -13261,35 +13274,35 @@ void parser___ReduceAction138___action(val_t  self, val_t  param0) {
   variable12 = variable13;
   variable13 =  variable12 /*nodearraylist1*/;
   variable14 = TAG_Bool(( variable13 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable13 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction138___action, 6973); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction138___action, LOCATE_parser, 6978); nit_exit(1);}
   variable14 =  variable11 /*nodearraylist2*/;
   variable15 = TAG_Bool(( variable14 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable14 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction138___action, 6975); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction138___action, LOCATE_parser, 6980); nit_exit(1);}
   variable15 =  variable10 /*nodearraylist3*/;
   variable16 = TAG_Bool(( variable15 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable15 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction138___action, 6977); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction138___action, LOCATE_parser, 6982); nit_exit(1);}
   variable17 = NEW_parser_prod___AReadAble___init_areadable( variable14 /*tkwredefnode4*/,  variable15 /*tkwreadablenode5*/); /*new AReadAble*/
   variable16 = variable17;
   variable17 =  variable9 /*nodearraylist4*/;
   variable18 = TAG_Bool(( variable17 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable17 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction138___action, 6983); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction138___action, LOCATE_parser, 6988); nit_exit(1);}
   variable19 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable17 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable18 = variable19;
   variable19 =  variable8 /*nodearraylist5*/;
   variable20 = TAG_Bool(( variable19 /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable19 /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction138___action, 6989); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction138___action, LOCATE_parser, 6994); nit_exit(1);}
   variable20 =  variable7 /*nodearraylist6*/;
   variable21 = TAG_Bool(( variable20 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable20 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction138___action, 6991); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction138___action, LOCATE_parser, 6996); nit_exit(1);}
   variable21 =  variable6 /*nodearraylist7*/;
   variable22 = TAG_Bool(( variable21 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable21 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction138___action, 6993); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction138___action, LOCATE_parser, 6998); nit_exit(1);}
   variable22 =  variable5 /*nodearraylist8*/;
   variable23 = TAG_Bool(( variable22 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable22 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction138___action, 6995); nit_exit(1);}
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction138___action, LOCATE_parser, 7000); nit_exit(1);}
   variable23 =  variable2 /*nodearraylist11*/;
   variable24 = TAG_Bool(( variable23 /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable23 /*pexprnode14*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction138___action, 6997); nit_exit(1);}
+  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction138___action, LOCATE_parser, 7002); nit_exit(1);}
   variable25 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable13 /*pdocnode2*/,  variable16 /*pablenode3*/,  variable18 /*pablenode6*/,  variable19 /*tkwredefnode9*/,  variable20 /*pvisibilitynode10*/,  variable21 /*tkwattrnode11*/,  variable22 /*tattridnode12*/,  NIT_NULL /*null*/,  variable23 /*pexprnode14*/); /*new AAttrPropdef*/
   variable24 = variable25;
   variable1 =  variable24 /*ppropdefnode1*/ /*node_list=*/;
@@ -13299,7 +13312,7 @@ void parser___ReduceAction138___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction138___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction138___init, 7012};
+  struct trace_t trace = {NULL, LOCATE_parser, 7017, LOCATE_parser___ReduceAction138___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction138].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction138].i] = 1;
@@ -13307,7 +13320,7 @@ void parser___ReduceAction138___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction139___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction139___action, 7016};
+  struct trace_t trace = {NULL, LOCATE_parser, 7021, LOCATE_parser___ReduceAction139___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -13365,38 +13378,38 @@ void parser___ReduceAction139___action(val_t  self, val_t  param0) {
   variable13 = variable14;
   variable14 =  variable13 /*nodearraylist1*/;
   variable15 = TAG_Bool(( variable14 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable14 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction139___action, 7032); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7037); nit_exit(1);}
   variable15 =  variable12 /*nodearraylist2*/;
   variable16 = TAG_Bool(( variable15 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable15 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction139___action, 7034); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7039); nit_exit(1);}
   variable16 =  variable11 /*nodearraylist3*/;
   variable17 = TAG_Bool(( variable16 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable16 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction139___action, 7036); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7041); nit_exit(1);}
   variable18 = NEW_parser_prod___AReadAble___init_areadable( variable15 /*tkwredefnode4*/,  variable16 /*tkwreadablenode5*/); /*new AReadAble*/
   variable17 = variable18;
   variable18 =  variable10 /*nodearraylist4*/;
   variable19 = TAG_Bool(( variable18 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable18 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction139___action, 7042); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7047); nit_exit(1);}
   variable19 =  variable9 /*nodearraylist5*/;
   variable20 = TAG_Bool(( variable19 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable19 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction139___action, 7044); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7049); nit_exit(1);}
   variable21 = NEW_parser_prod___AWriteAble___init_awriteable( variable18 /*tkwredefnode7*/,  variable19 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable20 = variable21;
   variable21 =  variable8 /*nodearraylist6*/;
   variable22 = TAG_Bool(( variable21 /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable21 /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction139___action, 7050); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7055); nit_exit(1);}
   variable22 =  variable7 /*nodearraylist7*/;
   variable23 = TAG_Bool(( variable22 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable22 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction139___action, 7052); nit_exit(1);}
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7057); nit_exit(1);}
   variable23 =  variable6 /*nodearraylist8*/;
   variable24 = TAG_Bool(( variable23 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable23 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction139___action, 7054); nit_exit(1);}
+  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7059); nit_exit(1);}
   variable24 =  variable5 /*nodearraylist9*/;
   variable25 = TAG_Bool(( variable24 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable24 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction139___action, 7056); nit_exit(1);}
+  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7061); nit_exit(1);}
   variable25 =  variable2 /*nodearraylist12*/;
   variable26 = TAG_Bool(( variable25 /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable25 /*pexprnode14*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable26)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction139___action, 7058); nit_exit(1);}
+  if (!UNTAG_Bool(variable26)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction139___action, LOCATE_parser, 7063); nit_exit(1);}
   variable27 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable14 /*pdocnode2*/,  variable17 /*pablenode3*/,  variable20 /*pablenode6*/,  variable21 /*tkwredefnode9*/,  variable22 /*pvisibilitynode10*/,  variable23 /*tkwattrnode11*/,  variable24 /*tattridnode12*/,  NIT_NULL /*null*/,  variable25 /*pexprnode14*/); /*new AAttrPropdef*/
   variable26 = variable27;
   variable1 =  variable26 /*ppropdefnode1*/ /*node_list=*/;
@@ -13406,7 +13419,7 @@ void parser___ReduceAction139___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction139___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction139___init, 7073};
+  struct trace_t trace = {NULL, LOCATE_parser, 7078, LOCATE_parser___ReduceAction139___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction139].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction139].i] = 1;
@@ -13414,7 +13427,7 @@ void parser___ReduceAction139___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction140___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction140___action, 7077};
+  struct trace_t trace = {NULL, LOCATE_parser, 7082, LOCATE_parser___ReduceAction140___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -13463,30 +13476,30 @@ void parser___ReduceAction140___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable12 =  variable11 /*nodearraylist1*/;
   variable13 = TAG_Bool(( variable12 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction140___action, 7091); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction140___action, LOCATE_parser, 7096); nit_exit(1);}
   variable13 =  variable10 /*nodearraylist2*/;
   variable14 = TAG_Bool(( variable13 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable13 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction140___action, 7093); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction140___action, LOCATE_parser, 7098); nit_exit(1);}
   variable14 =  variable9 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable14 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction140___action, 7095); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction140___action, LOCATE_parser, 7100); nit_exit(1);}
   variable16 = NEW_parser_prod___AReadAble___init_areadable( variable13 /*tkwredefnode4*/,  variable14 /*tkwreadablenode5*/); /*new AReadAble*/
   variable15 = variable16;
   variable16 =  variable8 /*nodearraylist4*/;
   variable17 = TAG_Bool(( variable16 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable16 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction140___action, 7101); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction140___action, LOCATE_parser, 7106); nit_exit(1);}
   variable17 =  variable7 /*nodearraylist5*/;
   variable18 = TAG_Bool(( variable17 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable17 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction140___action, 7103); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction140___action, LOCATE_parser, 7108); nit_exit(1);}
   variable18 =  variable6 /*nodearraylist6*/;
   variable19 = TAG_Bool(( variable18 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable18 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction140___action, 7105); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction140___action, LOCATE_parser, 7110); nit_exit(1);}
   variable19 =  variable5 /*nodearraylist7*/;
   variable20 = TAG_Bool(( variable19 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable19 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction140___action, 7107); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction140___action, LOCATE_parser, 7112); nit_exit(1);}
   variable20 =  variable2 /*nodearraylist10*/;
   variable21 = TAG_Bool(( variable20 /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable20 /*pexprnode12*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction140___action, 7109); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction140___action, LOCATE_parser, 7114); nit_exit(1);}
   variable22 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable12 /*pdocnode2*/,  variable15 /*pablenode3*/,  NIT_NULL /*null*/,  variable16 /*tkwredefnode7*/,  variable17 /*pvisibilitynode8*/,  variable18 /*tkwattrnode9*/,  variable19 /*tattridnode10*/,  NIT_NULL /*null*/,  variable20 /*pexprnode12*/); /*new AAttrPropdef*/
   variable21 = variable22;
   variable1 =  variable21 /*ppropdefnode1*/ /*node_list=*/;
@@ -13496,7 +13509,7 @@ void parser___ReduceAction140___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction140___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction140___init, 7124};
+  struct trace_t trace = {NULL, LOCATE_parser, 7129, LOCATE_parser___ReduceAction140___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction140].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction140].i] = 1;
@@ -13504,7 +13517,7 @@ void parser___ReduceAction140___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction141___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction141___action, 7128};
+  struct trace_t trace = {NULL, LOCATE_parser, 7133, LOCATE_parser___ReduceAction141___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -13549,27 +13562,27 @@ void parser___ReduceAction141___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction141___action, 7141); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction141___action, LOCATE_parser, 7146); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable12 /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction141___action, 7143); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction141___action, LOCATE_parser, 7148); nit_exit(1);}
   variable14 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable12 /*tkwwritablenode6*/); /*new AWriteAble*/
   variable13 = variable14;
   variable14 =  variable8 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable14 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction141___action, 7149); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction141___action, LOCATE_parser, 7154); nit_exit(1);}
   variable15 =  variable7 /*nodearraylist4*/;
   variable16 = TAG_Bool(( variable15 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable15 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction141___action, 7151); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction141___action, LOCATE_parser, 7156); nit_exit(1);}
   variable16 =  variable6 /*nodearraylist5*/;
   variable17 = TAG_Bool(( variable16 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable16 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction141___action, 7153); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction141___action, LOCATE_parser, 7158); nit_exit(1);}
   variable17 =  variable5 /*nodearraylist6*/;
   variable18 = TAG_Bool(( variable17 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable17 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction141___action, 7155); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction141___action, LOCATE_parser, 7160); nit_exit(1);}
   variable18 =  variable2 /*nodearraylist9*/;
   variable19 = TAG_Bool(( variable18 /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable18 /*pexprnode12*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction141___action, 7157); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction141___action, LOCATE_parser, 7162); nit_exit(1);}
   variable20 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable11 /*pdocnode2*/,  NIT_NULL /*null*/,  variable13 /*pablenode4*/,  variable14 /*tkwredefnode7*/,  variable15 /*pvisibilitynode8*/,  variable16 /*tkwattrnode9*/,  variable17 /*tattridnode10*/,  NIT_NULL /*null*/,  variable18 /*pexprnode12*/); /*new AAttrPropdef*/
   variable19 = variable20;
   variable1 =  variable19 /*ppropdefnode1*/ /*node_list=*/;
@@ -13579,7 +13592,7 @@ void parser___ReduceAction141___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction141___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction141___init, 7172};
+  struct trace_t trace = {NULL, LOCATE_parser, 7177, LOCATE_parser___ReduceAction141___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction141].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction141].i] = 1;
@@ -13587,7 +13600,7 @@ void parser___ReduceAction141___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction142___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction142___action, 7176};
+  struct trace_t trace = {NULL, LOCATE_parser, 7181, LOCATE_parser___ReduceAction142___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -13636,30 +13649,30 @@ void parser___ReduceAction142___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable12 =  variable11 /*nodearraylist1*/;
   variable13 = TAG_Bool(( variable12 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction142___action, 7190); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction142___action, LOCATE_parser, 7195); nit_exit(1);}
   variable13 =  variable10 /*nodearraylist2*/;
   variable14 = TAG_Bool(( variable13 /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable13 /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction142___action, 7192); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction142___action, LOCATE_parser, 7197); nit_exit(1);}
   variable14 =  variable9 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable14 /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction142___action, 7194); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction142___action, LOCATE_parser, 7199); nit_exit(1);}
   variable16 = NEW_parser_prod___AWriteAble___init_awriteable( variable13 /*tkwredefnode5*/,  variable14 /*tkwwritablenode6*/); /*new AWriteAble*/
   variable15 = variable16;
   variable16 =  variable8 /*nodearraylist4*/;
   variable17 = TAG_Bool(( variable16 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable16 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction142___action, 7200); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction142___action, LOCATE_parser, 7205); nit_exit(1);}
   variable17 =  variable7 /*nodearraylist5*/;
   variable18 = TAG_Bool(( variable17 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable17 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction142___action, 7202); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction142___action, LOCATE_parser, 7207); nit_exit(1);}
   variable18 =  variable6 /*nodearraylist6*/;
   variable19 = TAG_Bool(( variable18 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable18 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction142___action, 7204); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction142___action, LOCATE_parser, 7209); nit_exit(1);}
   variable19 =  variable5 /*nodearraylist7*/;
   variable20 = TAG_Bool(( variable19 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable19 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction142___action, 7206); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction142___action, LOCATE_parser, 7211); nit_exit(1);}
   variable20 =  variable2 /*nodearraylist10*/;
   variable21 = TAG_Bool(( variable20 /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable20 /*pexprnode12*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction142___action, 7208); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction142___action, LOCATE_parser, 7213); nit_exit(1);}
   variable22 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable12 /*pdocnode2*/,  NIT_NULL /*null*/,  variable15 /*pablenode4*/,  variable16 /*tkwredefnode7*/,  variable17 /*pvisibilitynode8*/,  variable18 /*tkwattrnode9*/,  variable19 /*tattridnode10*/,  NIT_NULL /*null*/,  variable20 /*pexprnode12*/); /*new AAttrPropdef*/
   variable21 = variable22;
   variable1 =  variable21 /*ppropdefnode1*/ /*node_list=*/;
@@ -13669,7 +13682,7 @@ void parser___ReduceAction142___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction142___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction142___init, 7223};
+  struct trace_t trace = {NULL, LOCATE_parser, 7228, LOCATE_parser___ReduceAction142___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction142].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction142].i] = 1;
@@ -13677,7 +13690,7 @@ void parser___ReduceAction142___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction143___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction143___action, 7227};
+  struct trace_t trace = {NULL, LOCATE_parser, 7232, LOCATE_parser___ReduceAction143___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -13717,22 +13730,22 @@ void parser___ReduceAction143___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction143___action, 7239); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction143___action, LOCATE_parser, 7244); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable11 /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction143___action, 7241); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction143___action, LOCATE_parser, 7246); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable12 /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction143___action, 7243); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction143___action, LOCATE_parser, 7248); nit_exit(1);}
   variable13 =  variable6 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*tkwattrnode7*/==NIT_NULL) || VAL_ISA( variable13 /*tkwattrnode7*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction143___action, 7245); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction143___action, LOCATE_parser, 7250); nit_exit(1);}
   variable14 =  variable5 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*tattridnode8*/==NIT_NULL) || VAL_ISA( variable14 /*tattridnode8*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction143___action, 7247); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction143___action, LOCATE_parser, 7252); nit_exit(1);}
   variable15 =  variable2 /*nodearraylist8*/;
   variable16 = TAG_Bool(( variable15 /*pexprnode10*/==NIT_NULL) || VAL_ISA( variable15 /*pexprnode10*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction143___action, 7249); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction143___action, LOCATE_parser, 7254); nit_exit(1);}
   variable17 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable10 /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable11 /*tkwredefnode5*/,  variable12 /*pvisibilitynode6*/,  variable13 /*tkwattrnode7*/,  variable14 /*tattridnode8*/,  NIT_NULL /*null*/,  variable15 /*pexprnode10*/); /*new AAttrPropdef*/
   variable16 = variable17;
   variable1 =  variable16 /*ppropdefnode1*/ /*node_list=*/;
@@ -13742,7 +13755,7 @@ void parser___ReduceAction143___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction143___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction143___init, 7264};
+  struct trace_t trace = {NULL, LOCATE_parser, 7269, LOCATE_parser___ReduceAction143___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction143].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction143].i] = 1;
@@ -13750,7 +13763,7 @@ void parser___ReduceAction143___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction144___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction144___action, 7268};
+  struct trace_t trace = {NULL, LOCATE_parser, 7273, LOCATE_parser___ReduceAction144___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -13800,32 +13813,32 @@ void parser___ReduceAction144___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable12 =  variable11 /*nodearraylist1*/;
   variable13 = TAG_Bool(( variable12 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction144___action, 7282); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction144___action, LOCATE_parser, 7287); nit_exit(1);}
   variable13 =  variable10 /*nodearraylist2*/;
   variable14 = TAG_Bool(( variable13 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable13 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction144___action, 7284); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction144___action, LOCATE_parser, 7289); nit_exit(1);}
   variable15 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable13 /*tkwreadablenode5*/); /*new AReadAble*/
   variable14 = variable15;
   variable15 =  variable9 /*nodearraylist3*/;
   variable16 = TAG_Bool(( variable15 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable15 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction144___action, 7290); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction144___action, LOCATE_parser, 7295); nit_exit(1);}
   variable17 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable15 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable16 = variable17;
   variable17 =  variable8 /*nodearraylist4*/;
   variable18 = TAG_Bool(( variable17 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable17 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction144___action, 7296); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction144___action, LOCATE_parser, 7301); nit_exit(1);}
   variable18 =  variable7 /*nodearraylist5*/;
   variable19 = TAG_Bool(( variable18 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable18 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction144___action, 7298); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction144___action, LOCATE_parser, 7303); nit_exit(1);}
   variable19 =  variable6 /*nodearraylist6*/;
   variable20 = TAG_Bool(( variable19 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable19 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction144___action, 7300); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction144___action, LOCATE_parser, 7305); nit_exit(1);}
   variable20 =  variable5 /*nodearraylist7*/;
   variable21 = TAG_Bool(( variable20 /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable20 /*ptypenode13*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction144___action, 7302); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction144___action, LOCATE_parser, 7307); nit_exit(1);}
   variable21 =  variable2 /*nodearraylist10*/;
   variable22 = TAG_Bool(( variable21 /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable21 /*pexprnode14*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction144___action, 7304); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction144___action, LOCATE_parser, 7309); nit_exit(1);}
   variable23 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable12 /*pdocnode2*/,  variable14 /*pablenode3*/,  variable16 /*pablenode6*/,  NIT_NULL /*null*/,  variable17 /*pvisibilitynode10*/,  variable18 /*tkwattrnode11*/,  variable19 /*tattridnode12*/,  variable20 /*ptypenode13*/,  variable21 /*pexprnode14*/); /*new AAttrPropdef*/
   variable22 = variable23;
   variable1 =  variable22 /*ppropdefnode1*/ /*node_list=*/;
@@ -13835,7 +13848,7 @@ void parser___ReduceAction144___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction144___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction144___init, 7319};
+  struct trace_t trace = {NULL, LOCATE_parser, 7324, LOCATE_parser___ReduceAction144___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction144].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction144].i] = 1;
@@ -13843,7 +13856,7 @@ void parser___ReduceAction144___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction145___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction145___action, 7323};
+  struct trace_t trace = {NULL, LOCATE_parser, 7328, LOCATE_parser___ReduceAction145___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -13897,35 +13910,35 @@ void parser___ReduceAction145___action(val_t  self, val_t  param0) {
   variable12 = variable13;
   variable13 =  variable12 /*nodearraylist1*/;
   variable14 = TAG_Bool(( variable13 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable13 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction145___action, 7338); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction145___action, LOCATE_parser, 7343); nit_exit(1);}
   variable14 =  variable11 /*nodearraylist2*/;
   variable15 = TAG_Bool(( variable14 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable14 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction145___action, 7340); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction145___action, LOCATE_parser, 7345); nit_exit(1);}
   variable16 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable14 /*tkwreadablenode5*/); /*new AReadAble*/
   variable15 = variable16;
   variable16 =  variable10 /*nodearraylist3*/;
   variable17 = TAG_Bool(( variable16 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable16 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction145___action, 7346); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction145___action, LOCATE_parser, 7351); nit_exit(1);}
   variable17 =  variable9 /*nodearraylist4*/;
   variable18 = TAG_Bool(( variable17 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable17 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction145___action, 7348); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction145___action, LOCATE_parser, 7353); nit_exit(1);}
   variable19 = NEW_parser_prod___AWriteAble___init_awriteable( variable16 /*tkwredefnode7*/,  variable17 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable18 = variable19;
   variable19 =  variable8 /*nodearraylist5*/;
   variable20 = TAG_Bool(( variable19 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable19 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction145___action, 7354); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction145___action, LOCATE_parser, 7359); nit_exit(1);}
   variable20 =  variable7 /*nodearraylist6*/;
   variable21 = TAG_Bool(( variable20 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable20 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction145___action, 7356); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction145___action, LOCATE_parser, 7361); nit_exit(1);}
   variable21 =  variable6 /*nodearraylist7*/;
   variable22 = TAG_Bool(( variable21 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable21 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction145___action, 7358); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction145___action, LOCATE_parser, 7363); nit_exit(1);}
   variable22 =  variable5 /*nodearraylist8*/;
   variable23 = TAG_Bool(( variable22 /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable22 /*ptypenode13*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction145___action, 7360); nit_exit(1);}
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction145___action, LOCATE_parser, 7365); nit_exit(1);}
   variable23 =  variable2 /*nodearraylist11*/;
   variable24 = TAG_Bool(( variable23 /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable23 /*pexprnode14*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction145___action, 7362); nit_exit(1);}
+  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction145___action, LOCATE_parser, 7367); nit_exit(1);}
   variable25 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable13 /*pdocnode2*/,  variable15 /*pablenode3*/,  variable18 /*pablenode6*/,  NIT_NULL /*null*/,  variable19 /*pvisibilitynode10*/,  variable20 /*tkwattrnode11*/,  variable21 /*tattridnode12*/,  variable22 /*ptypenode13*/,  variable23 /*pexprnode14*/); /*new AAttrPropdef*/
   variable24 = variable25;
   variable1 =  variable24 /*ppropdefnode1*/ /*node_list=*/;
@@ -13935,7 +13948,7 @@ void parser___ReduceAction145___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction145___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction145___init, 7377};
+  struct trace_t trace = {NULL, LOCATE_parser, 7382, LOCATE_parser___ReduceAction145___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction145].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction145].i] = 1;
@@ -13943,7 +13956,7 @@ void parser___ReduceAction145___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction146___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction146___action, 7381};
+  struct trace_t trace = {NULL, LOCATE_parser, 7386, LOCATE_parser___ReduceAction146___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -13988,27 +14001,27 @@ void parser___ReduceAction146___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction146___action, 7394); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction146___action, LOCATE_parser, 7399); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable12 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction146___action, 7396); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction146___action, LOCATE_parser, 7401); nit_exit(1);}
   variable14 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable12 /*tkwreadablenode5*/); /*new AReadAble*/
   variable13 = variable14;
   variable14 =  variable8 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable14 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction146___action, 7402); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction146___action, LOCATE_parser, 7407); nit_exit(1);}
   variable15 =  variable7 /*nodearraylist4*/;
   variable16 = TAG_Bool(( variable15 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable15 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction146___action, 7404); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction146___action, LOCATE_parser, 7409); nit_exit(1);}
   variable16 =  variable6 /*nodearraylist5*/;
   variable17 = TAG_Bool(( variable16 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable16 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction146___action, 7406); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction146___action, LOCATE_parser, 7411); nit_exit(1);}
   variable17 =  variable5 /*nodearraylist6*/;
   variable18 = TAG_Bool(( variable17 /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable17 /*ptypenode11*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction146___action, 7408); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction146___action, LOCATE_parser, 7413); nit_exit(1);}
   variable18 =  variable2 /*nodearraylist9*/;
   variable19 = TAG_Bool(( variable18 /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable18 /*pexprnode12*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction146___action, 7410); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction146___action, LOCATE_parser, 7415); nit_exit(1);}
   variable20 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable11 /*pdocnode2*/,  variable13 /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable14 /*pvisibilitynode8*/,  variable15 /*tkwattrnode9*/,  variable16 /*tattridnode10*/,  variable17 /*ptypenode11*/,  variable18 /*pexprnode12*/); /*new AAttrPropdef*/
   variable19 = variable20;
   variable1 =  variable19 /*ppropdefnode1*/ /*node_list=*/;
@@ -14018,7 +14031,7 @@ void parser___ReduceAction146___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction146___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction146___init, 7425};
+  struct trace_t trace = {NULL, LOCATE_parser, 7430, LOCATE_parser___ReduceAction146___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction146].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction146].i] = 1;
@@ -14026,7 +14039,7 @@ void parser___ReduceAction146___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction147___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction147___action, 7429};
+  struct trace_t trace = {NULL, LOCATE_parser, 7434, LOCATE_parser___ReduceAction147___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -14080,35 +14093,35 @@ void parser___ReduceAction147___action(val_t  self, val_t  param0) {
   variable12 = variable13;
   variable13 =  variable12 /*nodearraylist1*/;
   variable14 = TAG_Bool(( variable13 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable13 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction147___action, 7444); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction147___action, LOCATE_parser, 7449); nit_exit(1);}
   variable14 =  variable11 /*nodearraylist2*/;
   variable15 = TAG_Bool(( variable14 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable14 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction147___action, 7446); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction147___action, LOCATE_parser, 7451); nit_exit(1);}
   variable15 =  variable10 /*nodearraylist3*/;
   variable16 = TAG_Bool(( variable15 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable15 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction147___action, 7448); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction147___action, LOCATE_parser, 7453); nit_exit(1);}
   variable17 = NEW_parser_prod___AReadAble___init_areadable( variable14 /*tkwredefnode4*/,  variable15 /*tkwreadablenode5*/); /*new AReadAble*/
   variable16 = variable17;
   variable17 =  variable9 /*nodearraylist4*/;
   variable18 = TAG_Bool(( variable17 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable17 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction147___action, 7454); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction147___action, LOCATE_parser, 7459); nit_exit(1);}
   variable19 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable17 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable18 = variable19;
   variable19 =  variable8 /*nodearraylist5*/;
   variable20 = TAG_Bool(( variable19 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable19 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction147___action, 7460); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction147___action, LOCATE_parser, 7465); nit_exit(1);}
   variable20 =  variable7 /*nodearraylist6*/;
   variable21 = TAG_Bool(( variable20 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable20 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction147___action, 7462); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction147___action, LOCATE_parser, 7467); nit_exit(1);}
   variable21 =  variable6 /*nodearraylist7*/;
   variable22 = TAG_Bool(( variable21 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable21 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction147___action, 7464); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction147___action, LOCATE_parser, 7469); nit_exit(1);}
   variable22 =  variable5 /*nodearraylist8*/;
   variable23 = TAG_Bool(( variable22 /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable22 /*ptypenode13*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction147___action, 7466); nit_exit(1);}
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction147___action, LOCATE_parser, 7471); nit_exit(1);}
   variable23 =  variable2 /*nodearraylist11*/;
   variable24 = TAG_Bool(( variable23 /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable23 /*pexprnode14*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction147___action, 7468); nit_exit(1);}
+  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction147___action, LOCATE_parser, 7473); nit_exit(1);}
   variable25 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable13 /*pdocnode2*/,  variable16 /*pablenode3*/,  variable18 /*pablenode6*/,  NIT_NULL /*null*/,  variable19 /*pvisibilitynode10*/,  variable20 /*tkwattrnode11*/,  variable21 /*tattridnode12*/,  variable22 /*ptypenode13*/,  variable23 /*pexprnode14*/); /*new AAttrPropdef*/
   variable24 = variable25;
   variable1 =  variable24 /*ppropdefnode1*/ /*node_list=*/;
@@ -14118,7 +14131,7 @@ void parser___ReduceAction147___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction147___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction147___init, 7483};
+  struct trace_t trace = {NULL, LOCATE_parser, 7488, LOCATE_parser___ReduceAction147___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction147].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction147].i] = 1;
@@ -14126,7 +14139,7 @@ void parser___ReduceAction147___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction148___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction148___action, 7487};
+  struct trace_t trace = {NULL, LOCATE_parser, 7492, LOCATE_parser___ReduceAction148___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -14184,38 +14197,38 @@ void parser___ReduceAction148___action(val_t  self, val_t  param0) {
   variable13 = variable14;
   variable14 =  variable13 /*nodearraylist1*/;
   variable15 = TAG_Bool(( variable14 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable14 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction148___action, 7503); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7508); nit_exit(1);}
   variable15 =  variable12 /*nodearraylist2*/;
   variable16 = TAG_Bool(( variable15 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable15 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction148___action, 7505); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7510); nit_exit(1);}
   variable16 =  variable11 /*nodearraylist3*/;
   variable17 = TAG_Bool(( variable16 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable16 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction148___action, 7507); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7512); nit_exit(1);}
   variable18 = NEW_parser_prod___AReadAble___init_areadable( variable15 /*tkwredefnode4*/,  variable16 /*tkwreadablenode5*/); /*new AReadAble*/
   variable17 = variable18;
   variable18 =  variable10 /*nodearraylist4*/;
   variable19 = TAG_Bool(( variable18 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable18 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction148___action, 7513); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7518); nit_exit(1);}
   variable19 =  variable9 /*nodearraylist5*/;
   variable20 = TAG_Bool(( variable19 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable19 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction148___action, 7515); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7520); nit_exit(1);}
   variable21 = NEW_parser_prod___AWriteAble___init_awriteable( variable18 /*tkwredefnode7*/,  variable19 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable20 = variable21;
   variable21 =  variable8 /*nodearraylist6*/;
   variable22 = TAG_Bool(( variable21 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable21 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction148___action, 7521); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7526); nit_exit(1);}
   variable22 =  variable7 /*nodearraylist7*/;
   variable23 = TAG_Bool(( variable22 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable22 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction148___action, 7523); nit_exit(1);}
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7528); nit_exit(1);}
   variable23 =  variable6 /*nodearraylist8*/;
   variable24 = TAG_Bool(( variable23 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable23 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction148___action, 7525); nit_exit(1);}
+  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7530); nit_exit(1);}
   variable24 =  variable5 /*nodearraylist9*/;
   variable25 = TAG_Bool(( variable24 /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable24 /*ptypenode13*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction148___action, 7527); nit_exit(1);}
+  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7532); nit_exit(1);}
   variable25 =  variable2 /*nodearraylist12*/;
   variable26 = TAG_Bool(( variable25 /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable25 /*pexprnode14*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable26)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction148___action, 7529); nit_exit(1);}
+  if (!UNTAG_Bool(variable26)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction148___action, LOCATE_parser, 7534); nit_exit(1);}
   variable27 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable14 /*pdocnode2*/,  variable17 /*pablenode3*/,  variable20 /*pablenode6*/,  NIT_NULL /*null*/,  variable21 /*pvisibilitynode10*/,  variable22 /*tkwattrnode11*/,  variable23 /*tattridnode12*/,  variable24 /*ptypenode13*/,  variable25 /*pexprnode14*/); /*new AAttrPropdef*/
   variable26 = variable27;
   variable1 =  variable26 /*ppropdefnode1*/ /*node_list=*/;
@@ -14225,7 +14238,7 @@ void parser___ReduceAction148___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction148___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction148___init, 7544};
+  struct trace_t trace = {NULL, LOCATE_parser, 7549, LOCATE_parser___ReduceAction148___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction148].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction148].i] = 1;
@@ -14233,7 +14246,7 @@ void parser___ReduceAction148___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction149___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction149___action, 7548};
+  struct trace_t trace = {NULL, LOCATE_parser, 7553, LOCATE_parser___ReduceAction149___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -14282,30 +14295,30 @@ void parser___ReduceAction149___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable12 =  variable11 /*nodearraylist1*/;
   variable13 = TAG_Bool(( variable12 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction149___action, 7562); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction149___action, LOCATE_parser, 7567); nit_exit(1);}
   variable13 =  variable10 /*nodearraylist2*/;
   variable14 = TAG_Bool(( variable13 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable13 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction149___action, 7564); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction149___action, LOCATE_parser, 7569); nit_exit(1);}
   variable14 =  variable9 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable14 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction149___action, 7566); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction149___action, LOCATE_parser, 7571); nit_exit(1);}
   variable16 = NEW_parser_prod___AReadAble___init_areadable( variable13 /*tkwredefnode4*/,  variable14 /*tkwreadablenode5*/); /*new AReadAble*/
   variable15 = variable16;
   variable16 =  variable8 /*nodearraylist4*/;
   variable17 = TAG_Bool(( variable16 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable16 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction149___action, 7572); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction149___action, LOCATE_parser, 7577); nit_exit(1);}
   variable17 =  variable7 /*nodearraylist5*/;
   variable18 = TAG_Bool(( variable17 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable17 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction149___action, 7574); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction149___action, LOCATE_parser, 7579); nit_exit(1);}
   variable18 =  variable6 /*nodearraylist6*/;
   variable19 = TAG_Bool(( variable18 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable18 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction149___action, 7576); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction149___action, LOCATE_parser, 7581); nit_exit(1);}
   variable19 =  variable5 /*nodearraylist7*/;
   variable20 = TAG_Bool(( variable19 /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable19 /*ptypenode11*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction149___action, 7578); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction149___action, LOCATE_parser, 7583); nit_exit(1);}
   variable20 =  variable2 /*nodearraylist10*/;
   variable21 = TAG_Bool(( variable20 /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable20 /*pexprnode12*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction149___action, 7580); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction149___action, LOCATE_parser, 7585); nit_exit(1);}
   variable22 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable12 /*pdocnode2*/,  variable15 /*pablenode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable16 /*pvisibilitynode8*/,  variable17 /*tkwattrnode9*/,  variable18 /*tattridnode10*/,  variable19 /*ptypenode11*/,  variable20 /*pexprnode12*/); /*new AAttrPropdef*/
   variable21 = variable22;
   variable1 =  variable21 /*ppropdefnode1*/ /*node_list=*/;
@@ -14315,7 +14328,7 @@ void parser___ReduceAction149___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction149___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction149___init, 7595};
+  struct trace_t trace = {NULL, LOCATE_parser, 7600, LOCATE_parser___ReduceAction149___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction149].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction149].i] = 1;
@@ -14323,7 +14336,7 @@ void parser___ReduceAction149___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction150___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction150___action, 7599};
+  struct trace_t trace = {NULL, LOCATE_parser, 7604, LOCATE_parser___ReduceAction150___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -14368,27 +14381,27 @@ void parser___ReduceAction150___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction150___action, 7612); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction150___action, LOCATE_parser, 7617); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable12 /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction150___action, 7614); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction150___action, LOCATE_parser, 7619); nit_exit(1);}
   variable14 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable12 /*tkwwritablenode6*/); /*new AWriteAble*/
   variable13 = variable14;
   variable14 =  variable8 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable14 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction150___action, 7620); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction150___action, LOCATE_parser, 7625); nit_exit(1);}
   variable15 =  variable7 /*nodearraylist4*/;
   variable16 = TAG_Bool(( variable15 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable15 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction150___action, 7622); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction150___action, LOCATE_parser, 7627); nit_exit(1);}
   variable16 =  variable6 /*nodearraylist5*/;
   variable17 = TAG_Bool(( variable16 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable16 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction150___action, 7624); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction150___action, LOCATE_parser, 7629); nit_exit(1);}
   variable17 =  variable5 /*nodearraylist6*/;
   variable18 = TAG_Bool(( variable17 /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable17 /*ptypenode11*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction150___action, 7626); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction150___action, LOCATE_parser, 7631); nit_exit(1);}
   variable18 =  variable2 /*nodearraylist9*/;
   variable19 = TAG_Bool(( variable18 /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable18 /*pexprnode12*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction150___action, 7628); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction150___action, LOCATE_parser, 7633); nit_exit(1);}
   variable20 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable11 /*pdocnode2*/,  NIT_NULL /*null*/,  variable13 /*pablenode4*/,  NIT_NULL /*null*/,  variable14 /*pvisibilitynode8*/,  variable15 /*tkwattrnode9*/,  variable16 /*tattridnode10*/,  variable17 /*ptypenode11*/,  variable18 /*pexprnode12*/); /*new AAttrPropdef*/
   variable19 = variable20;
   variable1 =  variable19 /*ppropdefnode1*/ /*node_list=*/;
@@ -14398,7 +14411,7 @@ void parser___ReduceAction150___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction150___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction150___init, 7643};
+  struct trace_t trace = {NULL, LOCATE_parser, 7648, LOCATE_parser___ReduceAction150___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction150].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction150].i] = 1;
@@ -14406,7 +14419,7 @@ void parser___ReduceAction150___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction151___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction151___action, 7647};
+  struct trace_t trace = {NULL, LOCATE_parser, 7652, LOCATE_parser___ReduceAction151___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -14455,30 +14468,30 @@ void parser___ReduceAction151___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable12 =  variable11 /*nodearraylist1*/;
   variable13 = TAG_Bool(( variable12 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction151___action, 7661); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7666); nit_exit(1);}
   variable13 =  variable10 /*nodearraylist2*/;
   variable14 = TAG_Bool(( variable13 /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable13 /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction151___action, 7663); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7668); nit_exit(1);}
   variable14 =  variable9 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable14 /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction151___action, 7665); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7670); nit_exit(1);}
   variable16 = NEW_parser_prod___AWriteAble___init_awriteable( variable13 /*tkwredefnode5*/,  variable14 /*tkwwritablenode6*/); /*new AWriteAble*/
   variable15 = variable16;
   variable16 =  variable8 /*nodearraylist4*/;
   variable17 = TAG_Bool(( variable16 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable16 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction151___action, 7671); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7676); nit_exit(1);}
   variable17 =  variable7 /*nodearraylist5*/;
   variable18 = TAG_Bool(( variable17 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable17 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction151___action, 7673); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7678); nit_exit(1);}
   variable18 =  variable6 /*nodearraylist6*/;
   variable19 = TAG_Bool(( variable18 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable18 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction151___action, 7675); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7680); nit_exit(1);}
   variable19 =  variable5 /*nodearraylist7*/;
   variable20 = TAG_Bool(( variable19 /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable19 /*ptypenode11*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction151___action, 7677); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7682); nit_exit(1);}
   variable20 =  variable2 /*nodearraylist10*/;
   variable21 = TAG_Bool(( variable20 /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable20 /*pexprnode12*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction151___action, 7679); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction151___action, LOCATE_parser, 7684); nit_exit(1);}
   variable22 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable12 /*pdocnode2*/,  NIT_NULL /*null*/,  variable15 /*pablenode4*/,  NIT_NULL /*null*/,  variable16 /*pvisibilitynode8*/,  variable17 /*tkwattrnode9*/,  variable18 /*tattridnode10*/,  variable19 /*ptypenode11*/,  variable20 /*pexprnode12*/); /*new AAttrPropdef*/
   variable21 = variable22;
   variable1 =  variable21 /*ppropdefnode1*/ /*node_list=*/;
@@ -14488,7 +14501,7 @@ void parser___ReduceAction151___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction151___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction151___init, 7694};
+  struct trace_t trace = {NULL, LOCATE_parser, 7699, LOCATE_parser___ReduceAction151___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction151].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction151].i] = 1;
@@ -14496,7 +14509,7 @@ void parser___ReduceAction151___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction152___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction152___action, 7698};
+  struct trace_t trace = {NULL, LOCATE_parser, 7703, LOCATE_parser___ReduceAction152___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -14536,22 +14549,22 @@ void parser___ReduceAction152___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction152___action, 7710); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction152___action, LOCATE_parser, 7715); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable11 /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction152___action, 7712); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction152___action, LOCATE_parser, 7717); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*tkwattrnode7*/==NIT_NULL) || VAL_ISA( variable12 /*tkwattrnode7*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction152___action, 7714); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction152___action, LOCATE_parser, 7719); nit_exit(1);}
   variable13 =  variable6 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*tattridnode8*/==NIT_NULL) || VAL_ISA( variable13 /*tattridnode8*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction152___action, 7716); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction152___action, LOCATE_parser, 7721); nit_exit(1);}
   variable14 =  variable5 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable14 /*ptypenode9*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction152___action, 7718); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction152___action, LOCATE_parser, 7723); nit_exit(1);}
   variable15 =  variable2 /*nodearraylist8*/;
   variable16 = TAG_Bool(( variable15 /*pexprnode10*/==NIT_NULL) || VAL_ISA( variable15 /*pexprnode10*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction152___action, 7720); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction152___action, LOCATE_parser, 7725); nit_exit(1);}
   variable17 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable10 /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable11 /*pvisibilitynode6*/,  variable12 /*tkwattrnode7*/,  variable13 /*tattridnode8*/,  variable14 /*ptypenode9*/,  variable15 /*pexprnode10*/); /*new AAttrPropdef*/
   variable16 = variable17;
   variable1 =  variable16 /*ppropdefnode1*/ /*node_list=*/;
@@ -14561,7 +14574,7 @@ void parser___ReduceAction152___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction152___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction152___init, 7735};
+  struct trace_t trace = {NULL, LOCATE_parser, 7740, LOCATE_parser___ReduceAction152___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction152].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction152].i] = 1;
@@ -14569,7 +14582,7 @@ void parser___ReduceAction152___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction153___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction153___action, 7739};
+  struct trace_t trace = {NULL, LOCATE_parser, 7744, LOCATE_parser___ReduceAction153___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -14623,35 +14636,35 @@ void parser___ReduceAction153___action(val_t  self, val_t  param0) {
   variable12 = variable13;
   variable13 =  variable12 /*nodearraylist1*/;
   variable14 = TAG_Bool(( variable13 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable13 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction153___action, 7754); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction153___action, LOCATE_parser, 7759); nit_exit(1);}
   variable14 =  variable11 /*nodearraylist2*/;
   variable15 = TAG_Bool(( variable14 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable14 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction153___action, 7756); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction153___action, LOCATE_parser, 7761); nit_exit(1);}
   variable16 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable14 /*tkwreadablenode5*/); /*new AReadAble*/
   variable15 = variable16;
   variable16 =  variable10 /*nodearraylist3*/;
   variable17 = TAG_Bool(( variable16 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable16 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction153___action, 7762); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction153___action, LOCATE_parser, 7767); nit_exit(1);}
   variable18 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable16 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable17 = variable18;
   variable18 =  variable9 /*nodearraylist4*/;
   variable19 = TAG_Bool(( variable18 /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable18 /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction153___action, 7768); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction153___action, LOCATE_parser, 7773); nit_exit(1);}
   variable19 =  variable8 /*nodearraylist5*/;
   variable20 = TAG_Bool(( variable19 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable19 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction153___action, 7770); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction153___action, LOCATE_parser, 7775); nit_exit(1);}
   variable20 =  variable7 /*nodearraylist6*/;
   variable21 = TAG_Bool(( variable20 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable20 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction153___action, 7772); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction153___action, LOCATE_parser, 7777); nit_exit(1);}
   variable21 =  variable6 /*nodearraylist7*/;
   variable22 = TAG_Bool(( variable21 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable21 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction153___action, 7774); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction153___action, LOCATE_parser, 7779); nit_exit(1);}
   variable22 =  variable5 /*nodearraylist8*/;
   variable23 = TAG_Bool(( variable22 /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable22 /*ptypenode13*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction153___action, 7776); nit_exit(1);}
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction153___action, LOCATE_parser, 7781); nit_exit(1);}
   variable23 =  variable2 /*nodearraylist11*/;
   variable24 = TAG_Bool(( variable23 /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable23 /*pexprnode14*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction153___action, 7778); nit_exit(1);}
+  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction153___action, LOCATE_parser, 7783); nit_exit(1);}
   variable25 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable13 /*pdocnode2*/,  variable15 /*pablenode3*/,  variable17 /*pablenode6*/,  variable18 /*tkwredefnode9*/,  variable19 /*pvisibilitynode10*/,  variable20 /*tkwattrnode11*/,  variable21 /*tattridnode12*/,  variable22 /*ptypenode13*/,  variable23 /*pexprnode14*/); /*new AAttrPropdef*/
   variable24 = variable25;
   variable1 =  variable24 /*ppropdefnode1*/ /*node_list=*/;
@@ -14661,7 +14674,7 @@ void parser___ReduceAction153___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction153___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction153___init, 7793};
+  struct trace_t trace = {NULL, LOCATE_parser, 7798, LOCATE_parser___ReduceAction153___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction153].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction153].i] = 1;
@@ -14669,7 +14682,7 @@ void parser___ReduceAction153___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction154___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction154___action, 7797};
+  struct trace_t trace = {NULL, LOCATE_parser, 7802, LOCATE_parser___ReduceAction154___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -14727,38 +14740,38 @@ void parser___ReduceAction154___action(val_t  self, val_t  param0) {
   variable13 = variable14;
   variable14 =  variable13 /*nodearraylist1*/;
   variable15 = TAG_Bool(( variable14 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable14 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction154___action, 7813); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7818); nit_exit(1);}
   variable15 =  variable12 /*nodearraylist2*/;
   variable16 = TAG_Bool(( variable15 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable15 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction154___action, 7815); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7820); nit_exit(1);}
   variable17 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable15 /*tkwreadablenode5*/); /*new AReadAble*/
   variable16 = variable17;
   variable17 =  variable11 /*nodearraylist3*/;
   variable18 = TAG_Bool(( variable17 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable17 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction154___action, 7821); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7826); nit_exit(1);}
   variable18 =  variable10 /*nodearraylist4*/;
   variable19 = TAG_Bool(( variable18 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable18 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction154___action, 7823); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7828); nit_exit(1);}
   variable20 = NEW_parser_prod___AWriteAble___init_awriteable( variable17 /*tkwredefnode7*/,  variable18 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable19 = variable20;
   variable20 =  variable9 /*nodearraylist5*/;
   variable21 = TAG_Bool(( variable20 /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable20 /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction154___action, 7829); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7834); nit_exit(1);}
   variable21 =  variable8 /*nodearraylist6*/;
   variable22 = TAG_Bool(( variable21 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable21 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction154___action, 7831); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7836); nit_exit(1);}
   variable22 =  variable7 /*nodearraylist7*/;
   variable23 = TAG_Bool(( variable22 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable22 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction154___action, 7833); nit_exit(1);}
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7838); nit_exit(1);}
   variable23 =  variable6 /*nodearraylist8*/;
   variable24 = TAG_Bool(( variable23 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable23 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction154___action, 7835); nit_exit(1);}
+  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7840); nit_exit(1);}
   variable24 =  variable5 /*nodearraylist9*/;
   variable25 = TAG_Bool(( variable24 /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable24 /*ptypenode13*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction154___action, 7837); nit_exit(1);}
+  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7842); nit_exit(1);}
   variable25 =  variable2 /*nodearraylist12*/;
   variable26 = TAG_Bool(( variable25 /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable25 /*pexprnode14*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable26)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction154___action, 7839); nit_exit(1);}
+  if (!UNTAG_Bool(variable26)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction154___action, LOCATE_parser, 7844); nit_exit(1);}
   variable27 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable14 /*pdocnode2*/,  variable16 /*pablenode3*/,  variable19 /*pablenode6*/,  variable20 /*tkwredefnode9*/,  variable21 /*pvisibilitynode10*/,  variable22 /*tkwattrnode11*/,  variable23 /*tattridnode12*/,  variable24 /*ptypenode13*/,  variable25 /*pexprnode14*/); /*new AAttrPropdef*/
   variable26 = variable27;
   variable1 =  variable26 /*ppropdefnode1*/ /*node_list=*/;
@@ -14768,7 +14781,7 @@ void parser___ReduceAction154___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction154___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction154___init, 7854};
+  struct trace_t trace = {NULL, LOCATE_parser, 7859, LOCATE_parser___ReduceAction154___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction154].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction154].i] = 1;
@@ -14776,7 +14789,7 @@ void parser___ReduceAction154___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction155___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction155___action, 7858};
+  struct trace_t trace = {NULL, LOCATE_parser, 7863, LOCATE_parser___ReduceAction155___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -14825,30 +14838,30 @@ void parser___ReduceAction155___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable12 =  variable11 /*nodearraylist1*/;
   variable13 = TAG_Bool(( variable12 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction155___action, 7872); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction155___action, LOCATE_parser, 7877); nit_exit(1);}
   variable13 =  variable10 /*nodearraylist2*/;
   variable14 = TAG_Bool(( variable13 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable13 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction155___action, 7874); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction155___action, LOCATE_parser, 7879); nit_exit(1);}
   variable15 = NEW_parser_prod___AReadAble___init_areadable( NIT_NULL /*null*/,  variable13 /*tkwreadablenode5*/); /*new AReadAble*/
   variable14 = variable15;
   variable15 =  variable9 /*nodearraylist3*/;
   variable16 = TAG_Bool(( variable15 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable15 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction155___action, 7880); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction155___action, LOCATE_parser, 7885); nit_exit(1);}
   variable16 =  variable8 /*nodearraylist4*/;
   variable17 = TAG_Bool(( variable16 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable16 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction155___action, 7882); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction155___action, LOCATE_parser, 7887); nit_exit(1);}
   variable17 =  variable7 /*nodearraylist5*/;
   variable18 = TAG_Bool(( variable17 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable17 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction155___action, 7884); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction155___action, LOCATE_parser, 7889); nit_exit(1);}
   variable18 =  variable6 /*nodearraylist6*/;
   variable19 = TAG_Bool(( variable18 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable18 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction155___action, 7886); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction155___action, LOCATE_parser, 7891); nit_exit(1);}
   variable19 =  variable5 /*nodearraylist7*/;
   variable20 = TAG_Bool(( variable19 /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable19 /*ptypenode11*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction155___action, 7888); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction155___action, LOCATE_parser, 7893); nit_exit(1);}
   variable20 =  variable2 /*nodearraylist10*/;
   variable21 = TAG_Bool(( variable20 /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable20 /*pexprnode12*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction155___action, 7890); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction155___action, LOCATE_parser, 7895); nit_exit(1);}
   variable22 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable12 /*pdocnode2*/,  variable14 /*pablenode3*/,  NIT_NULL /*null*/,  variable15 /*tkwredefnode7*/,  variable16 /*pvisibilitynode8*/,  variable17 /*tkwattrnode9*/,  variable18 /*tattridnode10*/,  variable19 /*ptypenode11*/,  variable20 /*pexprnode12*/); /*new AAttrPropdef*/
   variable21 = variable22;
   variable1 =  variable21 /*ppropdefnode1*/ /*node_list=*/;
@@ -14858,7 +14871,7 @@ void parser___ReduceAction155___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction155___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction155___init, 7905};
+  struct trace_t trace = {NULL, LOCATE_parser, 7910, LOCATE_parser___ReduceAction155___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction155].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction155].i] = 1;
@@ -14866,7 +14879,7 @@ void parser___ReduceAction155___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction156___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction156___action, 7909};
+  struct trace_t trace = {NULL, LOCATE_parser, 7914, LOCATE_parser___ReduceAction156___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -14924,38 +14937,38 @@ void parser___ReduceAction156___action(val_t  self, val_t  param0) {
   variable13 = variable14;
   variable14 =  variable13 /*nodearraylist1*/;
   variable15 = TAG_Bool(( variable14 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable14 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction156___action, 7925); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7930); nit_exit(1);}
   variable15 =  variable12 /*nodearraylist2*/;
   variable16 = TAG_Bool(( variable15 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable15 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction156___action, 7927); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7932); nit_exit(1);}
   variable16 =  variable11 /*nodearraylist3*/;
   variable17 = TAG_Bool(( variable16 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable16 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction156___action, 7929); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7934); nit_exit(1);}
   variable18 = NEW_parser_prod___AReadAble___init_areadable( variable15 /*tkwredefnode4*/,  variable16 /*tkwreadablenode5*/); /*new AReadAble*/
   variable17 = variable18;
   variable18 =  variable10 /*nodearraylist4*/;
   variable19 = TAG_Bool(( variable18 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable18 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction156___action, 7935); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7940); nit_exit(1);}
   variable20 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable18 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable19 = variable20;
   variable20 =  variable9 /*nodearraylist5*/;
   variable21 = TAG_Bool(( variable20 /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable20 /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction156___action, 7941); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7946); nit_exit(1);}
   variable21 =  variable8 /*nodearraylist6*/;
   variable22 = TAG_Bool(( variable21 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable21 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction156___action, 7943); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7948); nit_exit(1);}
   variable22 =  variable7 /*nodearraylist7*/;
   variable23 = TAG_Bool(( variable22 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable22 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction156___action, 7945); nit_exit(1);}
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7950); nit_exit(1);}
   variable23 =  variable6 /*nodearraylist8*/;
   variable24 = TAG_Bool(( variable23 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable23 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction156___action, 7947); nit_exit(1);}
+  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7952); nit_exit(1);}
   variable24 =  variable5 /*nodearraylist9*/;
   variable25 = TAG_Bool(( variable24 /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable24 /*ptypenode13*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction156___action, 7949); nit_exit(1);}
+  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7954); nit_exit(1);}
   variable25 =  variable2 /*nodearraylist12*/;
   variable26 = TAG_Bool(( variable25 /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable25 /*pexprnode14*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable26)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction156___action, 7951); nit_exit(1);}
+  if (!UNTAG_Bool(variable26)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction156___action, LOCATE_parser, 7956); nit_exit(1);}
   variable27 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable14 /*pdocnode2*/,  variable17 /*pablenode3*/,  variable19 /*pablenode6*/,  variable20 /*tkwredefnode9*/,  variable21 /*pvisibilitynode10*/,  variable22 /*tkwattrnode11*/,  variable23 /*tattridnode12*/,  variable24 /*ptypenode13*/,  variable25 /*pexprnode14*/); /*new AAttrPropdef*/
   variable26 = variable27;
   variable1 =  variable26 /*ppropdefnode1*/ /*node_list=*/;
@@ -14965,7 +14978,7 @@ void parser___ReduceAction156___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction156___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction156___init, 7966};
+  struct trace_t trace = {NULL, LOCATE_parser, 7971, LOCATE_parser___ReduceAction156___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction156].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction156].i] = 1;
@@ -14973,7 +14986,7 @@ void parser___ReduceAction156___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction157___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction157___action, 7970};
+  struct trace_t trace = {NULL, LOCATE_parser, 7975, LOCATE_parser___ReduceAction157___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -15035,41 +15048,41 @@ void parser___ReduceAction157___action(val_t  self, val_t  param0) {
   variable14 = variable15;
   variable15 =  variable14 /*nodearraylist1*/;
   variable16 = TAG_Bool(( variable15 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable15 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction157___action, 7987); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 7992); nit_exit(1);}
   variable16 =  variable13 /*nodearraylist2*/;
   variable17 = TAG_Bool(( variable16 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable16 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction157___action, 7989); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 7994); nit_exit(1);}
   variable17 =  variable12 /*nodearraylist3*/;
   variable18 = TAG_Bool(( variable17 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable17 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction157___action, 7991); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 7996); nit_exit(1);}
   variable19 = NEW_parser_prod___AReadAble___init_areadable( variable16 /*tkwredefnode4*/,  variable17 /*tkwreadablenode5*/); /*new AReadAble*/
   variable18 = variable19;
   variable19 =  variable11 /*nodearraylist4*/;
   variable20 = TAG_Bool(( variable19 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable19 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction157___action, 7997); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 8002); nit_exit(1);}
   variable20 =  variable10 /*nodearraylist5*/;
   variable21 = TAG_Bool(( variable20 /*tkwwritablenode8*/==NIT_NULL) || VAL_ISA( variable20 /*tkwwritablenode8*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction157___action, 7999); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 8004); nit_exit(1);}
   variable22 = NEW_parser_prod___AWriteAble___init_awriteable( variable19 /*tkwredefnode7*/,  variable20 /*tkwwritablenode8*/); /*new AWriteAble*/
   variable21 = variable22;
   variable22 =  variable9 /*nodearraylist6*/;
   variable23 = TAG_Bool(( variable22 /*tkwredefnode9*/==NIT_NULL) || VAL_ISA( variable22 /*tkwredefnode9*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction157___action, 8005); nit_exit(1);}
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 8010); nit_exit(1);}
   variable23 =  variable8 /*nodearraylist7*/;
   variable24 = TAG_Bool(( variable23 /*pvisibilitynode10*/==NIT_NULL) || VAL_ISA( variable23 /*pvisibilitynode10*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction157___action, 8007); nit_exit(1);}
+  if (!UNTAG_Bool(variable24)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 8012); nit_exit(1);}
   variable24 =  variable7 /*nodearraylist8*/;
   variable25 = TAG_Bool(( variable24 /*tkwattrnode11*/==NIT_NULL) || VAL_ISA( variable24 /*tkwattrnode11*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction157___action, 8009); nit_exit(1);}
+  if (!UNTAG_Bool(variable25)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 8014); nit_exit(1);}
   variable25 =  variable6 /*nodearraylist9*/;
   variable26 = TAG_Bool(( variable25 /*tattridnode12*/==NIT_NULL) || VAL_ISA( variable25 /*tattridnode12*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable26)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction157___action, 8011); nit_exit(1);}
+  if (!UNTAG_Bool(variable26)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 8016); nit_exit(1);}
   variable26 =  variable5 /*nodearraylist10*/;
   variable27 = TAG_Bool(( variable26 /*ptypenode13*/==NIT_NULL) || VAL_ISA( variable26 /*ptypenode13*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable27)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction157___action, 8013); nit_exit(1);}
+  if (!UNTAG_Bool(variable27)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 8018); nit_exit(1);}
   variable27 =  variable2 /*nodearraylist13*/;
   variable28 = TAG_Bool(( variable27 /*pexprnode14*/==NIT_NULL) || VAL_ISA( variable27 /*pexprnode14*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable28)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction157___action, 8015); nit_exit(1);}
+  if (!UNTAG_Bool(variable28)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction157___action, LOCATE_parser, 8020); nit_exit(1);}
   variable29 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable15 /*pdocnode2*/,  variable18 /*pablenode3*/,  variable21 /*pablenode6*/,  variable22 /*tkwredefnode9*/,  variable23 /*pvisibilitynode10*/,  variable24 /*tkwattrnode11*/,  variable25 /*tattridnode12*/,  variable26 /*ptypenode13*/,  variable27 /*pexprnode14*/); /*new AAttrPropdef*/
   variable28 = variable29;
   variable1 =  variable28 /*ppropdefnode1*/ /*node_list=*/;
@@ -15079,7 +15092,7 @@ void parser___ReduceAction157___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction157___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction157___init, 8030};
+  struct trace_t trace = {NULL, LOCATE_parser, 8035, LOCATE_parser___ReduceAction157___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction157].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction157].i] = 1;
@@ -15087,7 +15100,7 @@ void parser___ReduceAction157___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction158___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction158___action, 8034};
+  struct trace_t trace = {NULL, LOCATE_parser, 8039, LOCATE_parser___ReduceAction158___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -15140,33 +15153,33 @@ void parser___ReduceAction158___action(val_t  self, val_t  param0) {
   variable12 = variable13;
   variable13 =  variable12 /*nodearraylist1*/;
   variable14 = TAG_Bool(( variable13 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable13 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction158___action, 8049); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction158___action, LOCATE_parser, 8054); nit_exit(1);}
   variable14 =  variable11 /*nodearraylist2*/;
   variable15 = TAG_Bool(( variable14 /*tkwredefnode4*/==NIT_NULL) || VAL_ISA( variable14 /*tkwredefnode4*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction158___action, 8051); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction158___action, LOCATE_parser, 8056); nit_exit(1);}
   variable15 =  variable10 /*nodearraylist3*/;
   variable16 = TAG_Bool(( variable15 /*tkwreadablenode5*/==NIT_NULL) || VAL_ISA( variable15 /*tkwreadablenode5*/, COLOR_TKwreadable, ID_TKwreadable)) /*cast TKwreadable*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction158___action, 8053); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction158___action, LOCATE_parser, 8058); nit_exit(1);}
   variable17 = NEW_parser_prod___AReadAble___init_areadable( variable14 /*tkwredefnode4*/,  variable15 /*tkwreadablenode5*/); /*new AReadAble*/
   variable16 = variable17;
   variable17 =  variable9 /*nodearraylist4*/;
   variable18 = TAG_Bool(( variable17 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable17 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction158___action, 8059); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction158___action, LOCATE_parser, 8064); nit_exit(1);}
   variable18 =  variable8 /*nodearraylist5*/;
   variable19 = TAG_Bool(( variable18 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable18 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction158___action, 8061); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction158___action, LOCATE_parser, 8066); nit_exit(1);}
   variable19 =  variable7 /*nodearraylist6*/;
   variable20 = TAG_Bool(( variable19 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable19 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction158___action, 8063); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction158___action, LOCATE_parser, 8068); nit_exit(1);}
   variable20 =  variable6 /*nodearraylist7*/;
   variable21 = TAG_Bool(( variable20 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable20 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction158___action, 8065); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction158___action, LOCATE_parser, 8070); nit_exit(1);}
   variable21 =  variable5 /*nodearraylist8*/;
   variable22 = TAG_Bool(( variable21 /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable21 /*ptypenode11*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction158___action, 8067); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction158___action, LOCATE_parser, 8072); nit_exit(1);}
   variable22 =  variable2 /*nodearraylist11*/;
   variable23 = TAG_Bool(( variable22 /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable22 /*pexprnode12*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction158___action, 8069); nit_exit(1);}
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction158___action, LOCATE_parser, 8074); nit_exit(1);}
   variable24 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable13 /*pdocnode2*/,  variable16 /*pablenode3*/,  NIT_NULL /*null*/,  variable17 /*tkwredefnode7*/,  variable18 /*pvisibilitynode8*/,  variable19 /*tkwattrnode9*/,  variable20 /*tattridnode10*/,  variable21 /*ptypenode11*/,  variable22 /*pexprnode12*/); /*new AAttrPropdef*/
   variable23 = variable24;
   variable1 =  variable23 /*ppropdefnode1*/ /*node_list=*/;
@@ -15176,7 +15189,7 @@ void parser___ReduceAction158___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction158___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction158___init, 8084};
+  struct trace_t trace = {NULL, LOCATE_parser, 8089, LOCATE_parser___ReduceAction158___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction158].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction158].i] = 1;
@@ -15184,7 +15197,7 @@ void parser___ReduceAction158___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction159___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction159___action, 8088};
+  struct trace_t trace = {NULL, LOCATE_parser, 8093, LOCATE_parser___ReduceAction159___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -15233,30 +15246,30 @@ void parser___ReduceAction159___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable12 =  variable11 /*nodearraylist1*/;
   variable13 = TAG_Bool(( variable12 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction159___action, 8102); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction159___action, LOCATE_parser, 8107); nit_exit(1);}
   variable13 =  variable10 /*nodearraylist2*/;
   variable14 = TAG_Bool(( variable13 /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable13 /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction159___action, 8104); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction159___action, LOCATE_parser, 8109); nit_exit(1);}
   variable15 = NEW_parser_prod___AWriteAble___init_awriteable( NIT_NULL /*null*/,  variable13 /*tkwwritablenode6*/); /*new AWriteAble*/
   variable14 = variable15;
   variable15 =  variable9 /*nodearraylist3*/;
   variable16 = TAG_Bool(( variable15 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable15 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction159___action, 8110); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction159___action, LOCATE_parser, 8115); nit_exit(1);}
   variable16 =  variable8 /*nodearraylist4*/;
   variable17 = TAG_Bool(( variable16 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable16 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction159___action, 8112); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction159___action, LOCATE_parser, 8117); nit_exit(1);}
   variable17 =  variable7 /*nodearraylist5*/;
   variable18 = TAG_Bool(( variable17 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable17 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction159___action, 8114); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction159___action, LOCATE_parser, 8119); nit_exit(1);}
   variable18 =  variable6 /*nodearraylist6*/;
   variable19 = TAG_Bool(( variable18 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable18 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction159___action, 8116); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction159___action, LOCATE_parser, 8121); nit_exit(1);}
   variable19 =  variable5 /*nodearraylist7*/;
   variable20 = TAG_Bool(( variable19 /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable19 /*ptypenode11*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction159___action, 8118); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction159___action, LOCATE_parser, 8123); nit_exit(1);}
   variable20 =  variable2 /*nodearraylist10*/;
   variable21 = TAG_Bool(( variable20 /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable20 /*pexprnode12*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction159___action, 8120); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction159___action, LOCATE_parser, 8125); nit_exit(1);}
   variable22 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable12 /*pdocnode2*/,  NIT_NULL /*null*/,  variable14 /*pablenode4*/,  variable15 /*tkwredefnode7*/,  variable16 /*pvisibilitynode8*/,  variable17 /*tkwattrnode9*/,  variable18 /*tattridnode10*/,  variable19 /*ptypenode11*/,  variable20 /*pexprnode12*/); /*new AAttrPropdef*/
   variable21 = variable22;
   variable1 =  variable21 /*ppropdefnode1*/ /*node_list=*/;
@@ -15266,7 +15279,7 @@ void parser___ReduceAction159___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction159___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction159___init, 8135};
+  struct trace_t trace = {NULL, LOCATE_parser, 8140, LOCATE_parser___ReduceAction159___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction159].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction159].i] = 1;
@@ -15274,7 +15287,7 @@ void parser___ReduceAction159___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction160___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction160___action, 8139};
+  struct trace_t trace = {NULL, LOCATE_parser, 8144, LOCATE_parser___ReduceAction160___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -15327,33 +15340,33 @@ void parser___ReduceAction160___action(val_t  self, val_t  param0) {
   variable12 = variable13;
   variable13 =  variable12 /*nodearraylist1*/;
   variable14 = TAG_Bool(( variable13 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable13 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction160___action, 8154); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8159); nit_exit(1);}
   variable14 =  variable11 /*nodearraylist2*/;
   variable15 = TAG_Bool(( variable14 /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable14 /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction160___action, 8156); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8161); nit_exit(1);}
   variable15 =  variable10 /*nodearraylist3*/;
   variable16 = TAG_Bool(( variable15 /*tkwwritablenode6*/==NIT_NULL) || VAL_ISA( variable15 /*tkwwritablenode6*/, COLOR_TKwwritable, ID_TKwwritable)) /*cast TKwwritable*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction160___action, 8158); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8163); nit_exit(1);}
   variable17 = NEW_parser_prod___AWriteAble___init_awriteable( variable14 /*tkwredefnode5*/,  variable15 /*tkwwritablenode6*/); /*new AWriteAble*/
   variable16 = variable17;
   variable17 =  variable9 /*nodearraylist4*/;
   variable18 = TAG_Bool(( variable17 /*tkwredefnode7*/==NIT_NULL) || VAL_ISA( variable17 /*tkwredefnode7*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction160___action, 8164); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8169); nit_exit(1);}
   variable18 =  variable8 /*nodearraylist5*/;
   variable19 = TAG_Bool(( variable18 /*pvisibilitynode8*/==NIT_NULL) || VAL_ISA( variable18 /*pvisibilitynode8*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction160___action, 8166); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8171); nit_exit(1);}
   variable19 =  variable7 /*nodearraylist6*/;
   variable20 = TAG_Bool(( variable19 /*tkwattrnode9*/==NIT_NULL) || VAL_ISA( variable19 /*tkwattrnode9*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction160___action, 8168); nit_exit(1);}
+  if (!UNTAG_Bool(variable20)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8173); nit_exit(1);}
   variable20 =  variable6 /*nodearraylist7*/;
   variable21 = TAG_Bool(( variable20 /*tattridnode10*/==NIT_NULL) || VAL_ISA( variable20 /*tattridnode10*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction160___action, 8170); nit_exit(1);}
+  if (!UNTAG_Bool(variable21)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8175); nit_exit(1);}
   variable21 =  variable5 /*nodearraylist8*/;
   variable22 = TAG_Bool(( variable21 /*ptypenode11*/==NIT_NULL) || VAL_ISA( variable21 /*ptypenode11*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction160___action, 8172); nit_exit(1);}
+  if (!UNTAG_Bool(variable22)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8177); nit_exit(1);}
   variable22 =  variable2 /*nodearraylist11*/;
   variable23 = TAG_Bool(( variable22 /*pexprnode12*/==NIT_NULL) || VAL_ISA( variable22 /*pexprnode12*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction160___action, 8174); nit_exit(1);}
+  if (!UNTAG_Bool(variable23)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction160___action, LOCATE_parser, 8179); nit_exit(1);}
   variable24 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable13 /*pdocnode2*/,  NIT_NULL /*null*/,  variable16 /*pablenode4*/,  variable17 /*tkwredefnode7*/,  variable18 /*pvisibilitynode8*/,  variable19 /*tkwattrnode9*/,  variable20 /*tattridnode10*/,  variable21 /*ptypenode11*/,  variable22 /*pexprnode12*/); /*new AAttrPropdef*/
   variable23 = variable24;
   variable1 =  variable23 /*ppropdefnode1*/ /*node_list=*/;
@@ -15363,7 +15376,7 @@ void parser___ReduceAction160___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction160___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction160___init, 8189};
+  struct trace_t trace = {NULL, LOCATE_parser, 8194, LOCATE_parser___ReduceAction160___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction160].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction160].i] = 1;
@@ -15371,7 +15384,7 @@ void parser___ReduceAction160___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction161___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction161___action, 8193};
+  struct trace_t trace = {NULL, LOCATE_parser, 8198, LOCATE_parser___ReduceAction161___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -15415,25 +15428,25 @@ void parser___ReduceAction161___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction161___action, 8206); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction161___action, LOCATE_parser, 8211); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwredefnode5*/==NIT_NULL) || VAL_ISA( variable12 /*tkwredefnode5*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction161___action, 8208); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction161___action, LOCATE_parser, 8213); nit_exit(1);}
   variable13 =  variable8 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*pvisibilitynode6*/==NIT_NULL) || VAL_ISA( variable13 /*pvisibilitynode6*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction161___action, 8210); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction161___action, LOCATE_parser, 8215); nit_exit(1);}
   variable14 =  variable7 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*tkwattrnode7*/==NIT_NULL) || VAL_ISA( variable14 /*tkwattrnode7*/, COLOR_TKwattr, ID_TKwattr)) /*cast TKwattr*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction161___action, 8212); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction161___action, LOCATE_parser, 8217); nit_exit(1);}
   variable15 =  variable6 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*tattridnode8*/==NIT_NULL) || VAL_ISA( variable15 /*tattridnode8*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction161___action, 8214); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction161___action, LOCATE_parser, 8219); nit_exit(1);}
   variable16 =  variable5 /*nodearraylist6*/;
   variable17 = TAG_Bool(( variable16 /*ptypenode9*/==NIT_NULL) || VAL_ISA( variable16 /*ptypenode9*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction161___action, 8216); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction161___action, LOCATE_parser, 8221); nit_exit(1);}
   variable17 =  variable2 /*nodearraylist9*/;
   variable18 = TAG_Bool(( variable17 /*pexprnode10*/==NIT_NULL) || VAL_ISA( variable17 /*pexprnode10*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction161___action, 8218); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction161___action, LOCATE_parser, 8223); nit_exit(1);}
   variable19 = NEW_parser_prod___AAttrPropdef___init_aattrpropdef( variable11 /*pdocnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  variable12 /*tkwredefnode5*/,  variable13 /*pvisibilitynode6*/,  variable14 /*tkwattrnode7*/,  variable15 /*tattridnode8*/,  variable16 /*ptypenode9*/,  variable17 /*pexprnode10*/); /*new AAttrPropdef*/
   variable18 = variable19;
   variable1 =  variable18 /*ppropdefnode1*/ /*node_list=*/;
@@ -15443,7 +15456,7 @@ void parser___ReduceAction161___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction161___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction161___init, 8233};
+  struct trace_t trace = {NULL, LOCATE_parser, 8238, LOCATE_parser___ReduceAction161___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction161].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction161].i] = 1;
@@ -15451,7 +15464,7 @@ void parser___ReduceAction161___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction162___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction162___action, 8237};
+  struct trace_t trace = {NULL, LOCATE_parser, 8242, LOCATE_parser___ReduceAction162___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -15487,19 +15500,19 @@ void parser___ReduceAction162___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable9 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction162___action, 8248); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction162___action, LOCATE_parser, 8253); nit_exit(1);}
   variable10 =  variable7 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable10 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction162___action, 8250); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction162___action, LOCATE_parser, 8255); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable11 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction162___action, 8252); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction162___action, LOCATE_parser, 8257); nit_exit(1);}
   variable12 =  variable5 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable12 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction162___action, 8254); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction162___action, LOCATE_parser, 8259); nit_exit(1);}
   variable13 =  variable4 /*nodearraylist5*/;
   variable14 = TAG_Bool(( variable13 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable13 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction162___action, 8256); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction162___action, LOCATE_parser, 8261); nit_exit(1);}
   variable15 = NEW_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable9 /*pdocnode2*/,  NIT_NULL /*null*/,  variable10 /*pvisibilitynode4*/,  variable11 /*tkwmethnode5*/,  variable12 /*pmethidnode6*/,  variable13 /*psignaturenode7*/); /*new ADeferredMethPropdef*/
   variable14 = variable15;
   variable1 =  variable14 /*ppropdefnode1*/ /*node_list=*/;
@@ -15509,7 +15522,7 @@ void parser___ReduceAction162___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction162___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction162___init, 8268};
+  struct trace_t trace = {NULL, LOCATE_parser, 8273, LOCATE_parser___ReduceAction162___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction162].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction162].i] = 1;
@@ -15517,7 +15530,7 @@ void parser___ReduceAction162___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction163___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction163___action, 8272};
+  struct trace_t trace = {NULL, LOCATE_parser, 8277, LOCATE_parser___ReduceAction163___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -15557,22 +15570,22 @@ void parser___ReduceAction163___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction163___action, 8284); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction163___action, LOCATE_parser, 8289); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable11 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction163___action, 8286); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction163___action, LOCATE_parser, 8291); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable12 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction163___action, 8288); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction163___action, LOCATE_parser, 8293); nit_exit(1);}
   variable13 =  variable6 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable13 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction163___action, 8290); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction163___action, LOCATE_parser, 8295); nit_exit(1);}
   variable14 =  variable5 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable14 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction163___action, 8292); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction163___action, LOCATE_parser, 8297); nit_exit(1);}
   variable15 =  variable4 /*nodearraylist6*/;
   variable16 = TAG_Bool(( variable15 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable15 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction163___action, 8294); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction163___action, LOCATE_parser, 8299); nit_exit(1);}
   variable17 = NEW_parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef( variable10 /*pdocnode2*/,  variable11 /*tkwredefnode3*/,  variable12 /*pvisibilitynode4*/,  variable13 /*tkwmethnode5*/,  variable14 /*pmethidnode6*/,  variable15 /*psignaturenode7*/); /*new ADeferredMethPropdef*/
   variable16 = variable17;
   variable1 =  variable16 /*ppropdefnode1*/ /*node_list=*/;
@@ -15582,7 +15595,7 @@ void parser___ReduceAction163___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction163___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction163___init, 8306};
+  struct trace_t trace = {NULL, LOCATE_parser, 8311, LOCATE_parser___ReduceAction163___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction163].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction163].i] = 1;
@@ -15590,7 +15603,7 @@ void parser___ReduceAction163___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction164___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction164___action, 8310};
+  struct trace_t trace = {NULL, LOCATE_parser, 8315, LOCATE_parser___ReduceAction164___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -15626,19 +15639,19 @@ void parser___ReduceAction164___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable9 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction164___action, 8321); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction164___action, LOCATE_parser, 8326); nit_exit(1);}
   variable10 =  variable7 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable10 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction164___action, 8323); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction164___action, LOCATE_parser, 8328); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable11 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction164___action, 8325); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction164___action, LOCATE_parser, 8330); nit_exit(1);}
   variable12 =  variable5 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable12 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction164___action, 8327); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction164___action, LOCATE_parser, 8332); nit_exit(1);}
   variable13 =  variable4 /*nodearraylist5*/;
   variable14 = TAG_Bool(( variable13 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable13 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction164___action, 8329); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction164___action, LOCATE_parser, 8334); nit_exit(1);}
   variable15 = NEW_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable9 /*pdocnode2*/,  NIT_NULL /*null*/,  variable10 /*pvisibilitynode4*/,  variable11 /*tkwmethnode5*/,  variable12 /*pmethidnode6*/,  variable13 /*psignaturenode7*/); /*new AInternMethPropdef*/
   variable14 = variable15;
   variable1 =  variable14 /*ppropdefnode1*/ /*node_list=*/;
@@ -15648,7 +15661,7 @@ void parser___ReduceAction164___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction164___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction164___init, 8341};
+  struct trace_t trace = {NULL, LOCATE_parser, 8346, LOCATE_parser___ReduceAction164___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction164].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction164].i] = 1;
@@ -15656,7 +15669,7 @@ void parser___ReduceAction164___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction165___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction165___action, 8345};
+  struct trace_t trace = {NULL, LOCATE_parser, 8350, LOCATE_parser___ReduceAction165___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -15696,22 +15709,22 @@ void parser___ReduceAction165___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction165___action, 8357); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction165___action, LOCATE_parser, 8362); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable11 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction165___action, 8359); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction165___action, LOCATE_parser, 8364); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable12 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction165___action, 8361); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction165___action, LOCATE_parser, 8366); nit_exit(1);}
   variable13 =  variable6 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable13 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction165___action, 8363); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction165___action, LOCATE_parser, 8368); nit_exit(1);}
   variable14 =  variable5 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable14 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction165___action, 8365); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction165___action, LOCATE_parser, 8370); nit_exit(1);}
   variable15 =  variable4 /*nodearraylist6*/;
   variable16 = TAG_Bool(( variable15 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable15 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction165___action, 8367); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction165___action, LOCATE_parser, 8372); nit_exit(1);}
   variable17 = NEW_parser_prod___AInternMethPropdef___init_ainternmethpropdef( variable10 /*pdocnode2*/,  variable11 /*tkwredefnode3*/,  variable12 /*pvisibilitynode4*/,  variable13 /*tkwmethnode5*/,  variable14 /*pmethidnode6*/,  variable15 /*psignaturenode7*/); /*new AInternMethPropdef*/
   variable16 = variable17;
   variable1 =  variable16 /*ppropdefnode1*/ /*node_list=*/;
@@ -15721,7 +15734,7 @@ void parser___ReduceAction165___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction165___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction165___init, 8379};
+  struct trace_t trace = {NULL, LOCATE_parser, 8384, LOCATE_parser___ReduceAction165___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction165].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction165].i] = 1;
@@ -15729,7 +15742,7 @@ void parser___ReduceAction165___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction166___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction166___action, 8383};
+  struct trace_t trace = {NULL, LOCATE_parser, 8388, LOCATE_parser___ReduceAction166___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -15765,19 +15778,19 @@ void parser___ReduceAction166___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable9 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction166___action, 8394); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction166___action, LOCATE_parser, 8399); nit_exit(1);}
   variable10 =  variable7 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable10 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction166___action, 8396); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction166___action, LOCATE_parser, 8401); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable11 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction166___action, 8398); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction166___action, LOCATE_parser, 8403); nit_exit(1);}
   variable12 =  variable5 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable12 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction166___action, 8400); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction166___action, LOCATE_parser, 8405); nit_exit(1);}
   variable13 =  variable4 /*nodearraylist5*/;
   variable14 = TAG_Bool(( variable13 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable13 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction166___action, 8402); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction166___action, LOCATE_parser, 8407); nit_exit(1);}
   variable15 = NEW_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable9 /*pdocnode2*/,  NIT_NULL /*null*/,  variable10 /*pvisibilitynode4*/,  variable11 /*tkwmethnode5*/,  variable12 /*pmethidnode6*/,  variable13 /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
   variable14 = variable15;
   variable1 =  variable14 /*ppropdefnode1*/ /*node_list=*/;
@@ -15787,7 +15800,7 @@ void parser___ReduceAction166___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction166___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction166___init, 8415};
+  struct trace_t trace = {NULL, LOCATE_parser, 8420, LOCATE_parser___ReduceAction166___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction166].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction166].i] = 1;
@@ -15795,7 +15808,7 @@ void parser___ReduceAction166___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction167___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction167___action, 8419};
+  struct trace_t trace = {NULL, LOCATE_parser, 8424, LOCATE_parser___ReduceAction167___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -15835,22 +15848,22 @@ void parser___ReduceAction167___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction167___action, 8431); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction167___action, LOCATE_parser, 8436); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable11 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction167___action, 8433); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction167___action, LOCATE_parser, 8438); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable12 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction167___action, 8435); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction167___action, LOCATE_parser, 8440); nit_exit(1);}
   variable13 =  variable6 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable13 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction167___action, 8437); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction167___action, LOCATE_parser, 8442); nit_exit(1);}
   variable14 =  variable5 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable14 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction167___action, 8439); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction167___action, LOCATE_parser, 8444); nit_exit(1);}
   variable15 =  variable4 /*nodearraylist6*/;
   variable16 = TAG_Bool(( variable15 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable15 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction167___action, 8441); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction167___action, LOCATE_parser, 8446); nit_exit(1);}
   variable17 = NEW_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable10 /*pdocnode2*/,  variable11 /*tkwredefnode3*/,  variable12 /*pvisibilitynode4*/,  variable13 /*tkwmethnode5*/,  variable14 /*pmethidnode6*/,  variable15 /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
   variable16 = variable17;
   variable1 =  variable16 /*ppropdefnode1*/ /*node_list=*/;
@@ -15860,7 +15873,7 @@ void parser___ReduceAction167___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction167___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction167___init, 8454};
+  struct trace_t trace = {NULL, LOCATE_parser, 8459, LOCATE_parser___ReduceAction167___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction167].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction167].i] = 1;
@@ -15868,7 +15881,7 @@ void parser___ReduceAction167___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction168___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction168___action, 8458};
+  struct trace_t trace = {NULL, LOCATE_parser, 8463, LOCATE_parser___ReduceAction168___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -15908,22 +15921,22 @@ void parser___ReduceAction168___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction168___action, 8470); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8475); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable11 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction168___action, 8472); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8477); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable12 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction168___action, 8474); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8479); nit_exit(1);}
   variable13 =  variable6 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable13 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction168___action, 8476); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8481); nit_exit(1);}
   variable14 =  variable5 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable14 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction168___action, 8478); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8483); nit_exit(1);}
   variable15 =  variable2 /*nodearraylist8*/;
   variable16 = TAG_Bool(( variable15 /*tstringnode8*/==NIT_NULL) || VAL_ISA( variable15 /*tstringnode8*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction168___action, 8480); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction168___action, LOCATE_parser, 8485); nit_exit(1);}
   variable17 = NEW_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable10 /*pdocnode2*/,  NIT_NULL /*null*/,  variable11 /*pvisibilitynode4*/,  variable12 /*tkwmethnode5*/,  variable13 /*pmethidnode6*/,  variable14 /*psignaturenode7*/,  variable15 /*tstringnode8*/); /*new AExternMethPropdef*/
   variable16 = variable17;
   variable1 =  variable16 /*ppropdefnode1*/ /*node_list=*/;
@@ -15933,7 +15946,7 @@ void parser___ReduceAction168___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction168___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction168___init, 8493};
+  struct trace_t trace = {NULL, LOCATE_parser, 8498, LOCATE_parser___ReduceAction168___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction168].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction168].i] = 1;
@@ -15941,7 +15954,7 @@ void parser___ReduceAction168___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction169___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction169___action, 8497};
+  struct trace_t trace = {NULL, LOCATE_parser, 8502, LOCATE_parser___ReduceAction169___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -15985,25 +15998,25 @@ void parser___ReduceAction169___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction169___action, 8510); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8515); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable12 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction169___action, 8512); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8517); nit_exit(1);}
   variable13 =  variable8 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable13 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction169___action, 8514); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8519); nit_exit(1);}
   variable14 =  variable7 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable14 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction169___action, 8516); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8521); nit_exit(1);}
   variable15 =  variable6 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable15 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction169___action, 8518); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8523); nit_exit(1);}
   variable16 =  variable5 /*nodearraylist6*/;
   variable17 = TAG_Bool(( variable16 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable16 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction169___action, 8520); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8525); nit_exit(1);}
   variable17 =  variable2 /*nodearraylist9*/;
   variable18 = TAG_Bool(( variable17 /*tstringnode8*/==NIT_NULL) || VAL_ISA( variable17 /*tstringnode8*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction169___action, 8522); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction169___action, LOCATE_parser, 8527); nit_exit(1);}
   variable19 = NEW_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable11 /*pdocnode2*/,  variable12 /*tkwredefnode3*/,  variable13 /*pvisibilitynode4*/,  variable14 /*tkwmethnode5*/,  variable15 /*pmethidnode6*/,  variable16 /*psignaturenode7*/,  variable17 /*tstringnode8*/); /*new AExternMethPropdef*/
   variable18 = variable19;
   variable1 =  variable18 /*ppropdefnode1*/ /*node_list=*/;
@@ -16013,7 +16026,7 @@ void parser___ReduceAction169___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction169___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction169___init, 8535};
+  struct trace_t trace = {NULL, LOCATE_parser, 8540, LOCATE_parser___ReduceAction169___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction169].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction169].i] = 1;
@@ -16021,7 +16034,7 @@ void parser___ReduceAction169___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction170___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction170___action, 8539};
+  struct trace_t trace = {NULL, LOCATE_parser, 8544, LOCATE_parser___ReduceAction170___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -16061,22 +16074,22 @@ void parser___ReduceAction170___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction170___action, 8551); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction170___action, LOCATE_parser, 8556); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable11 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction170___action, 8553); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction170___action, LOCATE_parser, 8558); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable12 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction170___action, 8555); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction170___action, LOCATE_parser, 8560); nit_exit(1);}
   variable13 =  variable6 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable13 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction170___action, 8557); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction170___action, LOCATE_parser, 8562); nit_exit(1);}
   variable14 =  variable5 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable14 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction170___action, 8559); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction170___action, LOCATE_parser, 8564); nit_exit(1);}
   variable15 =  variable2 /*nodearraylist8*/;
   variable16 = TAG_Bool(( variable15 /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable15 /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction170___action, 8561); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction170___action, LOCATE_parser, 8566); nit_exit(1);}
   variable17 = NEW_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable10 /*pdocnode2*/,  NIT_NULL /*null*/,  variable11 /*pvisibilitynode4*/,  variable12 /*tkwmethnode5*/,  variable13 /*pmethidnode6*/,  variable14 /*psignaturenode7*/,  variable15 /*pexprnode8*/); /*new AConcreteMethPropdef*/
   variable16 = variable17;
   variable1 =  variable16 /*ppropdefnode1*/ /*node_list=*/;
@@ -16086,7 +16099,7 @@ void parser___ReduceAction170___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction170___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction170___init, 8574};
+  struct trace_t trace = {NULL, LOCATE_parser, 8579, LOCATE_parser___ReduceAction170___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction170].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction170].i] = 1;
@@ -16094,7 +16107,7 @@ void parser___ReduceAction170___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction171___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction171___action, 8578};
+  struct trace_t trace = {NULL, LOCATE_parser, 8583, LOCATE_parser___ReduceAction171___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -16138,25 +16151,25 @@ void parser___ReduceAction171___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction171___action, 8591); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction171___action, LOCATE_parser, 8596); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable12 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction171___action, 8593); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction171___action, LOCATE_parser, 8598); nit_exit(1);}
   variable13 =  variable8 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable13 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction171___action, 8595); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction171___action, LOCATE_parser, 8600); nit_exit(1);}
   variable14 =  variable7 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable14 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction171___action, 8597); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction171___action, LOCATE_parser, 8602); nit_exit(1);}
   variable15 =  variable6 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable15 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction171___action, 8599); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction171___action, LOCATE_parser, 8604); nit_exit(1);}
   variable16 =  variable5 /*nodearraylist6*/;
   variable17 = TAG_Bool(( variable16 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable16 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction171___action, 8601); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction171___action, LOCATE_parser, 8606); nit_exit(1);}
   variable17 =  variable2 /*nodearraylist9*/;
   variable18 = TAG_Bool(( variable17 /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable17 /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction171___action, 8603); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction171___action, LOCATE_parser, 8608); nit_exit(1);}
   variable19 = NEW_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable11 /*pdocnode2*/,  variable12 /*tkwredefnode3*/,  variable13 /*pvisibilitynode4*/,  variable14 /*tkwmethnode5*/,  variable15 /*pmethidnode6*/,  variable16 /*psignaturenode7*/,  variable17 /*pexprnode8*/); /*new AConcreteMethPropdef*/
   variable18 = variable19;
   variable1 =  variable18 /*ppropdefnode1*/ /*node_list=*/;
@@ -16166,7 +16179,7 @@ void parser___ReduceAction171___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction171___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction171___init, 8616};
+  struct trace_t trace = {NULL, LOCATE_parser, 8621, LOCATE_parser___ReduceAction171___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction171].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction171].i] = 1;
@@ -16174,7 +16187,7 @@ void parser___ReduceAction171___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction172___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction172___action, 8620};
+  struct trace_t trace = {NULL, LOCATE_parser, 8625, LOCATE_parser___ReduceAction172___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -16217,22 +16230,22 @@ void parser___ReduceAction172___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction172___action, 8633); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction172___action, LOCATE_parser, 8638); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable12 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction172___action, 8635); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction172___action, LOCATE_parser, 8640); nit_exit(1);}
   variable13 =  variable8 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable13 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction172___action, 8637); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction172___action, LOCATE_parser, 8642); nit_exit(1);}
   variable14 =  variable7 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable14 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction172___action, 8639); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction172___action, LOCATE_parser, 8644); nit_exit(1);}
   variable15 =  variable6 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable15 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction172___action, 8641); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction172___action, LOCATE_parser, 8646); nit_exit(1);}
   variable16 =  variable3 /*nodearraylist8*/;
   variable17 = TAG_Bool(( variable16 /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable16 /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction172___action, 8643); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction172___action, LOCATE_parser, 8648); nit_exit(1);}
   variable18 = NEW_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable11 /*pdocnode2*/,  NIT_NULL /*null*/,  variable12 /*pvisibilitynode4*/,  variable13 /*tkwmethnode5*/,  variable14 /*pmethidnode6*/,  variable15 /*psignaturenode7*/,  variable16 /*pexprnode8*/); /*new AConcreteMethPropdef*/
   variable17 = variable18;
   variable1 =  variable17 /*ppropdefnode1*/ /*node_list=*/;
@@ -16242,7 +16255,7 @@ void parser___ReduceAction172___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction172___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction172___init, 8656};
+  struct trace_t trace = {NULL, LOCATE_parser, 8661, LOCATE_parser___ReduceAction172___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction172].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction172].i] = 1;
@@ -16250,7 +16263,7 @@ void parser___ReduceAction172___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction173___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction173___action, 8660};
+  struct trace_t trace = {NULL, LOCATE_parser, 8665, LOCATE_parser___ReduceAction173___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -16297,25 +16310,25 @@ void parser___ReduceAction173___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable12 =  variable11 /*nodearraylist1*/;
   variable13 = TAG_Bool(( variable12 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction173___action, 8674); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction173___action, LOCATE_parser, 8679); nit_exit(1);}
   variable13 =  variable10 /*nodearraylist2*/;
   variable14 = TAG_Bool(( variable13 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable13 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction173___action, 8676); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction173___action, LOCATE_parser, 8681); nit_exit(1);}
   variable14 =  variable9 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable14 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction173___action, 8678); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction173___action, LOCATE_parser, 8683); nit_exit(1);}
   variable15 =  variable8 /*nodearraylist4*/;
   variable16 = TAG_Bool(( variable15 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable15 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction173___action, 8680); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction173___action, LOCATE_parser, 8685); nit_exit(1);}
   variable16 =  variable7 /*nodearraylist5*/;
   variable17 = TAG_Bool(( variable16 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable16 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction173___action, 8682); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction173___action, LOCATE_parser, 8687); nit_exit(1);}
   variable17 =  variable6 /*nodearraylist6*/;
   variable18 = TAG_Bool(( variable17 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable17 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction173___action, 8684); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction173___action, LOCATE_parser, 8689); nit_exit(1);}
   variable18 =  variable3 /*nodearraylist9*/;
   variable19 = TAG_Bool(( variable18 /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable18 /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction173___action, 8686); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction173___action, LOCATE_parser, 8691); nit_exit(1);}
   variable20 = NEW_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable12 /*pdocnode2*/,  variable13 /*tkwredefnode3*/,  variable14 /*pvisibilitynode4*/,  variable15 /*tkwmethnode5*/,  variable16 /*pmethidnode6*/,  variable17 /*psignaturenode7*/,  variable18 /*pexprnode8*/); /*new AConcreteMethPropdef*/
   variable19 = variable20;
   variable1 =  variable19 /*ppropdefnode1*/ /*node_list=*/;
@@ -16325,7 +16338,7 @@ void parser___ReduceAction173___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction173___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction173___init, 8699};
+  struct trace_t trace = {NULL, LOCATE_parser, 8704, LOCATE_parser___ReduceAction173___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction173].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction173].i] = 1;
@@ -16333,7 +16346,7 @@ void parser___ReduceAction173___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction174___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction174___action, 8703};
+  struct trace_t trace = {NULL, LOCATE_parser, 8708, LOCATE_parser___ReduceAction174___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -16369,19 +16382,19 @@ void parser___ReduceAction174___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable9 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction174___action, 8714); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction174___action, LOCATE_parser, 8719); nit_exit(1);}
   variable10 =  variable7 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable10 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction174___action, 8716); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction174___action, LOCATE_parser, 8721); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable11 /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction174___action, 8718); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction174___action, LOCATE_parser, 8723); nit_exit(1);}
   variable12 =  variable5 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable12 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction174___action, 8720); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction174___action, LOCATE_parser, 8725); nit_exit(1);}
   variable13 =  variable2 /*nodearraylist7*/;
   variable14 = TAG_Bool(( variable13 /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable13 /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction174___action, 8722); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction174___action, LOCATE_parser, 8727); nit_exit(1);}
   variable15 = NEW_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable9 /*pdocnode2*/,  NIT_NULL /*null*/,  variable10 /*pvisibilitynode4*/,  variable11 /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable12 /*psignaturenode7*/,  variable13 /*pexprnode8*/); /*new AConcreteInitPropdef*/
   variable14 = variable15;
   variable1 =  variable14 /*ppropdefnode1*/ /*node_list=*/;
@@ -16391,7 +16404,7 @@ void parser___ReduceAction174___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction174___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction174___init, 8735};
+  struct trace_t trace = {NULL, LOCATE_parser, 8740, LOCATE_parser___ReduceAction174___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction174].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction174].i] = 1;
@@ -16399,7 +16412,7 @@ void parser___ReduceAction174___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction175___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction175___action, 8739};
+  struct trace_t trace = {NULL, LOCATE_parser, 8744, LOCATE_parser___ReduceAction175___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -16439,22 +16452,22 @@ void parser___ReduceAction175___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction175___action, 8751); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction175___action, LOCATE_parser, 8756); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable11 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction175___action, 8753); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction175___action, LOCATE_parser, 8758); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable12 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction175___action, 8755); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction175___action, LOCATE_parser, 8760); nit_exit(1);}
   variable13 =  variable6 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable13 /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction175___action, 8757); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction175___action, LOCATE_parser, 8762); nit_exit(1);}
   variable14 =  variable5 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable14 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction175___action, 8759); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction175___action, LOCATE_parser, 8764); nit_exit(1);}
   variable15 =  variable2 /*nodearraylist8*/;
   variable16 = TAG_Bool(( variable15 /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable15 /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction175___action, 8761); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction175___action, LOCATE_parser, 8766); nit_exit(1);}
   variable17 = NEW_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable10 /*pdocnode2*/,  variable11 /*tkwredefnode3*/,  variable12 /*pvisibilitynode4*/,  variable13 /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable14 /*psignaturenode7*/,  variable15 /*pexprnode8*/); /*new AConcreteInitPropdef*/
   variable16 = variable17;
   variable1 =  variable16 /*ppropdefnode1*/ /*node_list=*/;
@@ -16464,7 +16477,7 @@ void parser___ReduceAction175___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction175___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction175___init, 8774};
+  struct trace_t trace = {NULL, LOCATE_parser, 8779, LOCATE_parser___ReduceAction175___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction175].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction175].i] = 1;
@@ -16472,7 +16485,7 @@ void parser___ReduceAction175___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction176___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction176___action, 8778};
+  struct trace_t trace = {NULL, LOCATE_parser, 8783, LOCATE_parser___ReduceAction176___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -16512,22 +16525,22 @@ void parser___ReduceAction176___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction176___action, 8790); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction176___action, LOCATE_parser, 8795); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable11 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction176___action, 8792); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction176___action, LOCATE_parser, 8797); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable12 /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction176___action, 8794); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction176___action, LOCATE_parser, 8799); nit_exit(1);}
   variable13 =  variable6 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable13 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction176___action, 8796); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction176___action, LOCATE_parser, 8801); nit_exit(1);}
   variable14 =  variable5 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable14 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction176___action, 8798); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction176___action, LOCATE_parser, 8803); nit_exit(1);}
   variable15 =  variable2 /*nodearraylist8*/;
   variable16 = TAG_Bool(( variable15 /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable15 /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction176___action, 8800); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction176___action, LOCATE_parser, 8805); nit_exit(1);}
   variable17 = NEW_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable10 /*pdocnode2*/,  NIT_NULL /*null*/,  variable11 /*pvisibilitynode4*/,  variable12 /*tkwinitnode5*/,  variable13 /*pmethidnode6*/,  variable14 /*psignaturenode7*/,  variable15 /*pexprnode8*/); /*new AConcreteInitPropdef*/
   variable16 = variable17;
   variable1 =  variable16 /*ppropdefnode1*/ /*node_list=*/;
@@ -16537,7 +16550,7 @@ void parser___ReduceAction176___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction176___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction176___init, 8813};
+  struct trace_t trace = {NULL, LOCATE_parser, 8818, LOCATE_parser___ReduceAction176___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction176].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction176].i] = 1;
@@ -16545,7 +16558,7 @@ void parser___ReduceAction176___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction177___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction177___action, 8817};
+  struct trace_t trace = {NULL, LOCATE_parser, 8822, LOCATE_parser___ReduceAction177___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -16589,25 +16602,25 @@ void parser___ReduceAction177___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction177___action, 8830); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 8835); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable12 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction177___action, 8832); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 8837); nit_exit(1);}
   variable13 =  variable8 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable13 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction177___action, 8834); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 8839); nit_exit(1);}
   variable14 =  variable7 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable14 /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction177___action, 8836); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 8841); nit_exit(1);}
   variable15 =  variable6 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable15 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction177___action, 8838); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 8843); nit_exit(1);}
   variable16 =  variable5 /*nodearraylist6*/;
   variable17 = TAG_Bool(( variable16 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable16 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction177___action, 8840); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 8845); nit_exit(1);}
   variable17 =  variable2 /*nodearraylist9*/;
   variable18 = TAG_Bool(( variable17 /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable17 /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction177___action, 8842); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction177___action, LOCATE_parser, 8847); nit_exit(1);}
   variable19 = NEW_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable11 /*pdocnode2*/,  variable12 /*tkwredefnode3*/,  variable13 /*pvisibilitynode4*/,  variable14 /*tkwinitnode5*/,  variable15 /*pmethidnode6*/,  variable16 /*psignaturenode7*/,  variable17 /*pexprnode8*/); /*new AConcreteInitPropdef*/
   variable18 = variable19;
   variable1 =  variable18 /*ppropdefnode1*/ /*node_list=*/;
@@ -16617,7 +16630,7 @@ void parser___ReduceAction177___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction177___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction177___init, 8855};
+  struct trace_t trace = {NULL, LOCATE_parser, 8860, LOCATE_parser___ReduceAction177___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction177].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction177].i] = 1;
@@ -16625,7 +16638,7 @@ void parser___ReduceAction177___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction178___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction178___action, 8859};
+  struct trace_t trace = {NULL, LOCATE_parser, 8864, LOCATE_parser___ReduceAction178___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -16664,19 +16677,19 @@ void parser___ReduceAction178___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction178___action, 8871); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction178___action, LOCATE_parser, 8876); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable11 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction178___action, 8873); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction178___action, LOCATE_parser, 8878); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable12 /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction178___action, 8875); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction178___action, LOCATE_parser, 8880); nit_exit(1);}
   variable13 =  variable6 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable13 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction178___action, 8877); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction178___action, LOCATE_parser, 8882); nit_exit(1);}
   variable14 =  variable3 /*nodearraylist7*/;
   variable15 = TAG_Bool(( variable14 /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable14 /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction178___action, 8879); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction178___action, LOCATE_parser, 8884); nit_exit(1);}
   variable16 = NEW_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable10 /*pdocnode2*/,  NIT_NULL /*null*/,  variable11 /*pvisibilitynode4*/,  variable12 /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable13 /*psignaturenode7*/,  variable14 /*pexprnode8*/); /*new AConcreteInitPropdef*/
   variable15 = variable16;
   variable1 =  variable15 /*ppropdefnode1*/ /*node_list=*/;
@@ -16686,7 +16699,7 @@ void parser___ReduceAction178___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction178___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction178___init, 8892};
+  struct trace_t trace = {NULL, LOCATE_parser, 8897, LOCATE_parser___ReduceAction178___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction178].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction178].i] = 1;
@@ -16694,7 +16707,7 @@ void parser___ReduceAction178___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction179___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction179___action, 8896};
+  struct trace_t trace = {NULL, LOCATE_parser, 8901, LOCATE_parser___ReduceAction179___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -16737,22 +16750,22 @@ void parser___ReduceAction179___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction179___action, 8909); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction179___action, LOCATE_parser, 8914); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable12 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction179___action, 8911); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction179___action, LOCATE_parser, 8916); nit_exit(1);}
   variable13 =  variable8 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable13 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction179___action, 8913); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction179___action, LOCATE_parser, 8918); nit_exit(1);}
   variable14 =  variable7 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable14 /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction179___action, 8915); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction179___action, LOCATE_parser, 8920); nit_exit(1);}
   variable15 =  variable6 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable15 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction179___action, 8917); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction179___action, LOCATE_parser, 8922); nit_exit(1);}
   variable16 =  variable3 /*nodearraylist8*/;
   variable17 = TAG_Bool(( variable16 /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable16 /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction179___action, 8919); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction179___action, LOCATE_parser, 8924); nit_exit(1);}
   variable18 = NEW_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable11 /*pdocnode2*/,  variable12 /*tkwredefnode3*/,  variable13 /*pvisibilitynode4*/,  variable14 /*tkwinitnode5*/,  NIT_NULL /*null*/,  variable15 /*psignaturenode7*/,  variable16 /*pexprnode8*/); /*new AConcreteInitPropdef*/
   variable17 = variable18;
   variable1 =  variable17 /*ppropdefnode1*/ /*node_list=*/;
@@ -16762,7 +16775,7 @@ void parser___ReduceAction179___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction179___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction179___init, 8932};
+  struct trace_t trace = {NULL, LOCATE_parser, 8937, LOCATE_parser___ReduceAction179___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction179].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction179].i] = 1;
@@ -16770,7 +16783,7 @@ void parser___ReduceAction179___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction180___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction180___action, 8936};
+  struct trace_t trace = {NULL, LOCATE_parser, 8941, LOCATE_parser___ReduceAction180___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -16813,22 +16826,22 @@ void parser___ReduceAction180___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction180___action, 8949); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction180___action, LOCATE_parser, 8954); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable12 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction180___action, 8951); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction180___action, LOCATE_parser, 8956); nit_exit(1);}
   variable13 =  variable8 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable13 /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction180___action, 8953); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction180___action, LOCATE_parser, 8958); nit_exit(1);}
   variable14 =  variable7 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable14 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction180___action, 8955); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction180___action, LOCATE_parser, 8960); nit_exit(1);}
   variable15 =  variable6 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable15 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction180___action, 8957); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction180___action, LOCATE_parser, 8962); nit_exit(1);}
   variable16 =  variable3 /*nodearraylist8*/;
   variable17 = TAG_Bool(( variable16 /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable16 /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction180___action, 8959); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction180___action, LOCATE_parser, 8964); nit_exit(1);}
   variable18 = NEW_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable11 /*pdocnode2*/,  NIT_NULL /*null*/,  variable12 /*pvisibilitynode4*/,  variable13 /*tkwinitnode5*/,  variable14 /*pmethidnode6*/,  variable15 /*psignaturenode7*/,  variable16 /*pexprnode8*/); /*new AConcreteInitPropdef*/
   variable17 = variable18;
   variable1 =  variable17 /*ppropdefnode1*/ /*node_list=*/;
@@ -16838,7 +16851,7 @@ void parser___ReduceAction180___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction180___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction180___init, 8972};
+  struct trace_t trace = {NULL, LOCATE_parser, 8977, LOCATE_parser___ReduceAction180___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction180].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction180].i] = 1;
@@ -16846,7 +16859,7 @@ void parser___ReduceAction180___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction181___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction181___action, 8976};
+  struct trace_t trace = {NULL, LOCATE_parser, 8981, LOCATE_parser___ReduceAction181___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -16893,25 +16906,25 @@ void parser___ReduceAction181___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable12 =  variable11 /*nodearraylist1*/;
   variable13 = TAG_Bool(( variable12 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction181___action, 8990); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction181___action, LOCATE_parser, 8995); nit_exit(1);}
   variable13 =  variable10 /*nodearraylist2*/;
   variable14 = TAG_Bool(( variable13 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable13 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction181___action, 8992); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction181___action, LOCATE_parser, 8997); nit_exit(1);}
   variable14 =  variable9 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable14 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction181___action, 8994); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction181___action, LOCATE_parser, 8999); nit_exit(1);}
   variable15 =  variable8 /*nodearraylist4*/;
   variable16 = TAG_Bool(( variable15 /*tkwinitnode5*/==NIT_NULL) || VAL_ISA( variable15 /*tkwinitnode5*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction181___action, 8996); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction181___action, LOCATE_parser, 9001); nit_exit(1);}
   variable16 =  variable7 /*nodearraylist5*/;
   variable17 = TAG_Bool(( variable16 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable16 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction181___action, 8998); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction181___action, LOCATE_parser, 9003); nit_exit(1);}
   variable17 =  variable6 /*nodearraylist6*/;
   variable18 = TAG_Bool(( variable17 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable17 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction181___action, 9000); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction181___action, LOCATE_parser, 9005); nit_exit(1);}
   variable18 =  variable3 /*nodearraylist9*/;
   variable19 = TAG_Bool(( variable18 /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable18 /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction181___action, 9002); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction181___action, LOCATE_parser, 9007); nit_exit(1);}
   variable20 = NEW_parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef( variable12 /*pdocnode2*/,  variable13 /*tkwredefnode3*/,  variable14 /*pvisibilitynode4*/,  variable15 /*tkwinitnode5*/,  variable16 /*pmethidnode6*/,  variable17 /*psignaturenode7*/,  variable18 /*pexprnode8*/); /*new AConcreteInitPropdef*/
   variable19 = variable20;
   variable1 =  variable19 /*ppropdefnode1*/ /*node_list=*/;
@@ -16921,7 +16934,7 @@ void parser___ReduceAction181___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction181___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction181___init, 9015};
+  struct trace_t trace = {NULL, LOCATE_parser, 9020, LOCATE_parser___ReduceAction181___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction181].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction181].i] = 1;
@@ -16929,7 +16942,7 @@ void parser___ReduceAction181___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction182___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction182___action, 9019};
+  struct trace_t trace = {NULL, LOCATE_parser, 9024, LOCATE_parser___ReduceAction182___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -16959,19 +16972,19 @@ void parser___ReduceAction182___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable7 =  variable6 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable7 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction182___action, 9028); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction182___action, LOCATE_parser, 9033); nit_exit(1);}
   variable8 =  variable5 /*nodearraylist2*/;
   variable9 = TAG_Bool(( variable8 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable8 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction182___action, 9030); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction182___action, LOCATE_parser, 9035); nit_exit(1);}
   variable9 =  variable4 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*tkwtypenode5*/==NIT_NULL) || VAL_ISA( variable9 /*tkwtypenode5*/, COLOR_TKwtype, ID_TKwtype)) /*cast TKwtype*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction182___action, 9032); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction182___action, LOCATE_parser, 9037); nit_exit(1);}
   variable10 =  variable3 /*nodearraylist4*/;
   variable11 = TAG_Bool(( variable10 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable10 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction182___action, 9034); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction182___action, LOCATE_parser, 9039); nit_exit(1);}
   variable11 =  variable2 /*nodearraylist5*/;
   variable12 = TAG_Bool(( variable11 /*ptypenode7*/==NIT_NULL) || VAL_ISA( variable11 /*ptypenode7*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction182___action, 9036); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction182___action, LOCATE_parser, 9041); nit_exit(1);}
   variable13 = NEW_parser_prod___ATypePropdef___init_atypepropdef( variable7 /*pdocnode2*/,  NIT_NULL /*null*/,  variable8 /*pvisibilitynode4*/,  variable9 /*tkwtypenode5*/,  variable10 /*tclassidnode6*/,  variable11 /*ptypenode7*/); /*new ATypePropdef*/
   variable12 = variable13;
   variable1 =  variable12 /*ppropdefnode1*/ /*node_list=*/;
@@ -16981,7 +16994,7 @@ void parser___ReduceAction182___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction182___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction182___init, 9048};
+  struct trace_t trace = {NULL, LOCATE_parser, 9053, LOCATE_parser___ReduceAction182___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction182].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction182].i] = 1;
@@ -16989,7 +17002,7 @@ void parser___ReduceAction182___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction183___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction183___action, 9052};
+  struct trace_t trace = {NULL, LOCATE_parser, 9057, LOCATE_parser___ReduceAction183___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17023,22 +17036,22 @@ void parser___ReduceAction183___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable7 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction183___action, 9062); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction183___action, LOCATE_parser, 9067); nit_exit(1);}
   variable9 =  variable6 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable9 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction183___action, 9064); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction183___action, LOCATE_parser, 9069); nit_exit(1);}
   variable10 =  variable5 /*nodearraylist3*/;
   variable11 = TAG_Bool(( variable10 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable10 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction183___action, 9066); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction183___action, LOCATE_parser, 9071); nit_exit(1);}
   variable11 =  variable4 /*nodearraylist4*/;
   variable12 = TAG_Bool(( variable11 /*tkwtypenode5*/==NIT_NULL) || VAL_ISA( variable11 /*tkwtypenode5*/, COLOR_TKwtype, ID_TKwtype)) /*cast TKwtype*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction183___action, 9068); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction183___action, LOCATE_parser, 9073); nit_exit(1);}
   variable12 =  variable3 /*nodearraylist5*/;
   variable13 = TAG_Bool(( variable12 /*tclassidnode6*/==NIT_NULL) || VAL_ISA( variable12 /*tclassidnode6*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction183___action, 9070); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction183___action, LOCATE_parser, 9075); nit_exit(1);}
   variable13 =  variable2 /*nodearraylist6*/;
   variable14 = TAG_Bool(( variable13 /*ptypenode7*/==NIT_NULL) || VAL_ISA( variable13 /*ptypenode7*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction183___action, 9072); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction183___action, LOCATE_parser, 9077); nit_exit(1);}
   variable15 = NEW_parser_prod___ATypePropdef___init_atypepropdef( variable8 /*pdocnode2*/,  variable9 /*tkwredefnode3*/,  variable10 /*pvisibilitynode4*/,  variable11 /*tkwtypenode5*/,  variable12 /*tclassidnode6*/,  variable13 /*ptypenode7*/); /*new ATypePropdef*/
   variable14 = variable15;
   variable1 =  variable14 /*ppropdefnode1*/ /*node_list=*/;
@@ -17048,7 +17061,7 @@ void parser___ReduceAction183___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction183___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction183___init, 9084};
+  struct trace_t trace = {NULL, LOCATE_parser, 9089, LOCATE_parser___ReduceAction183___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction183].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction183].i] = 1;
@@ -17056,7 +17069,7 @@ void parser___ReduceAction183___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction184___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction184___action, 9088};
+  struct trace_t trace = {NULL, LOCATE_parser, 9093, LOCATE_parser___ReduceAction184___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17072,7 +17085,7 @@ void parser___ReduceAction184___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*ppropdefnode1*/==NIT_NULL) || VAL_ISA( variable4 /*ppropdefnode1*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction184___action, 9094); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction184___action, LOCATE_parser, 9099); nit_exit(1);}
   variable1 =  variable4 /*ppropdefnode1*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(13)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable5,  variable1 /*node_list*/) /*Parser::push*/;
@@ -17080,7 +17093,7 @@ void parser___ReduceAction184___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction184___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction184___init, 9098};
+  struct trace_t trace = {NULL, LOCATE_parser, 9103, LOCATE_parser___ReduceAction184___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction184].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction184].i] = 1;
@@ -17088,7 +17101,7 @@ void parser___ReduceAction184___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction185___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction185___action, 9102};
+  struct trace_t trace = {NULL, LOCATE_parser, 9107, LOCATE_parser___ReduceAction185___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17124,19 +17137,19 @@ void parser___ReduceAction185___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable9 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction185___action, 9113); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction185___action, LOCATE_parser, 9118); nit_exit(1);}
   variable10 =  variable7 /*nodearraylist2*/;
   variable11 = TAG_Bool(( variable10 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable10 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction185___action, 9115); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction185___action, LOCATE_parser, 9120); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable11 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction185___action, 9117); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction185___action, LOCATE_parser, 9122); nit_exit(1);}
   variable12 =  variable5 /*nodearraylist4*/;
   variable13 = TAG_Bool(( variable12 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable12 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction185___action, 9119); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction185___action, LOCATE_parser, 9124); nit_exit(1);}
   variable13 =  variable4 /*nodearraylist5*/;
   variable14 = TAG_Bool(( variable13 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable13 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction185___action, 9121); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction185___action, LOCATE_parser, 9126); nit_exit(1);}
   variable15 = NEW_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable9 /*pdocnode2*/,  NIT_NULL /*null*/,  variable10 /*pvisibilitynode4*/,  variable11 /*tkwmethnode5*/,  variable12 /*pmethidnode6*/,  variable13 /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
   variable14 = variable15;
   variable1 =  variable14 /*ppropdefnode1*/ /*node_list=*/;
@@ -17146,7 +17159,7 @@ void parser___ReduceAction185___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction185___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction185___init, 9134};
+  struct trace_t trace = {NULL, LOCATE_parser, 9139, LOCATE_parser___ReduceAction185___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction185].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction185].i] = 1;
@@ -17154,7 +17167,7 @@ void parser___ReduceAction185___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction186___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction186___action, 9138};
+  struct trace_t trace = {NULL, LOCATE_parser, 9143, LOCATE_parser___ReduceAction186___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17194,22 +17207,22 @@ void parser___ReduceAction186___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction186___action, 9150); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction186___action, LOCATE_parser, 9155); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable11 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction186___action, 9152); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction186___action, LOCATE_parser, 9157); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable12 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction186___action, 9154); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction186___action, LOCATE_parser, 9159); nit_exit(1);}
   variable13 =  variable6 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable13 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction186___action, 9156); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction186___action, LOCATE_parser, 9161); nit_exit(1);}
   variable14 =  variable5 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable14 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction186___action, 9158); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction186___action, LOCATE_parser, 9163); nit_exit(1);}
   variable15 =  variable4 /*nodearraylist6*/;
   variable16 = TAG_Bool(( variable15 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable15 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction186___action, 9160); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction186___action, LOCATE_parser, 9165); nit_exit(1);}
   variable17 = NEW_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable10 /*pdocnode2*/,  variable11 /*tkwredefnode3*/,  variable12 /*pvisibilitynode4*/,  variable13 /*tkwmethnode5*/,  variable14 /*pmethidnode6*/,  variable15 /*psignaturenode7*/,  NIT_NULL /*null*/); /*new AExternMethPropdef*/
   variable16 = variable17;
   variable1 =  variable16 /*ppropdefnode1*/ /*node_list=*/;
@@ -17219,7 +17232,7 @@ void parser___ReduceAction186___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction186___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction186___init, 9173};
+  struct trace_t trace = {NULL, LOCATE_parser, 9178, LOCATE_parser___ReduceAction186___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction186].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction186].i] = 1;
@@ -17227,7 +17240,7 @@ void parser___ReduceAction186___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction187___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction187___action, 9177};
+  struct trace_t trace = {NULL, LOCATE_parser, 9182, LOCATE_parser___ReduceAction187___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17267,22 +17280,22 @@ void parser___ReduceAction187___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction187___action, 9189); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction187___action, LOCATE_parser, 9194); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable11 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction187___action, 9191); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction187___action, LOCATE_parser, 9196); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable12 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction187___action, 9193); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction187___action, LOCATE_parser, 9198); nit_exit(1);}
   variable13 =  variable6 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable13 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction187___action, 9195); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction187___action, LOCATE_parser, 9200); nit_exit(1);}
   variable14 =  variable5 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable14 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction187___action, 9197); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction187___action, LOCATE_parser, 9202); nit_exit(1);}
   variable15 =  variable2 /*nodearraylist8*/;
   variable16 = TAG_Bool(( variable15 /*tstringnode8*/==NIT_NULL) || VAL_ISA( variable15 /*tstringnode8*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction187___action, 9199); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction187___action, LOCATE_parser, 9204); nit_exit(1);}
   variable17 = NEW_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable10 /*pdocnode2*/,  NIT_NULL /*null*/,  variable11 /*pvisibilitynode4*/,  variable12 /*tkwmethnode5*/,  variable13 /*pmethidnode6*/,  variable14 /*psignaturenode7*/,  variable15 /*tstringnode8*/); /*new AExternMethPropdef*/
   variable16 = variable17;
   variable1 =  variable16 /*ppropdefnode1*/ /*node_list=*/;
@@ -17292,7 +17305,7 @@ void parser___ReduceAction187___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction187___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction187___init, 9212};
+  struct trace_t trace = {NULL, LOCATE_parser, 9217, LOCATE_parser___ReduceAction187___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction187].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction187].i] = 1;
@@ -17300,7 +17313,7 @@ void parser___ReduceAction187___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction188___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction188___action, 9216};
+  struct trace_t trace = {NULL, LOCATE_parser, 9221, LOCATE_parser___ReduceAction188___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17344,25 +17357,25 @@ void parser___ReduceAction188___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction188___action, 9229); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction188___action, LOCATE_parser, 9234); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable12 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction188___action, 9231); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction188___action, LOCATE_parser, 9236); nit_exit(1);}
   variable13 =  variable8 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable13 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction188___action, 9233); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction188___action, LOCATE_parser, 9238); nit_exit(1);}
   variable14 =  variable7 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable14 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction188___action, 9235); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction188___action, LOCATE_parser, 9240); nit_exit(1);}
   variable15 =  variable6 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable15 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction188___action, 9237); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction188___action, LOCATE_parser, 9242); nit_exit(1);}
   variable16 =  variable5 /*nodearraylist6*/;
   variable17 = TAG_Bool(( variable16 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable16 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction188___action, 9239); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction188___action, LOCATE_parser, 9244); nit_exit(1);}
   variable17 =  variable2 /*nodearraylist9*/;
   variable18 = TAG_Bool(( variable17 /*tstringnode8*/==NIT_NULL) || VAL_ISA( variable17 /*tstringnode8*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction188___action, 9241); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction188___action, LOCATE_parser, 9246); nit_exit(1);}
   variable19 = NEW_parser_prod___AExternMethPropdef___init_aexternmethpropdef( variable11 /*pdocnode2*/,  variable12 /*tkwredefnode3*/,  variable13 /*pvisibilitynode4*/,  variable14 /*tkwmethnode5*/,  variable15 /*pmethidnode6*/,  variable16 /*psignaturenode7*/,  variable17 /*tstringnode8*/); /*new AExternMethPropdef*/
   variable18 = variable19;
   variable1 =  variable18 /*ppropdefnode1*/ /*node_list=*/;
@@ -17372,7 +17385,7 @@ void parser___ReduceAction188___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction188___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction188___init, 9254};
+  struct trace_t trace = {NULL, LOCATE_parser, 9259, LOCATE_parser___ReduceAction188___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction188].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction188].i] = 1;
@@ -17380,7 +17393,7 @@ void parser___ReduceAction188___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction189___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction189___action, 9258};
+  struct trace_t trace = {NULL, LOCATE_parser, 9263, LOCATE_parser___ReduceAction189___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17420,22 +17433,22 @@ void parser___ReduceAction189___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction189___action, 9270); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction189___action, LOCATE_parser, 9275); nit_exit(1);}
   variable11 =  variable8 /*nodearraylist2*/;
   variable12 = TAG_Bool(( variable11 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable11 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction189___action, 9272); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction189___action, LOCATE_parser, 9277); nit_exit(1);}
   variable12 =  variable7 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable12 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction189___action, 9274); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction189___action, LOCATE_parser, 9279); nit_exit(1);}
   variable13 =  variable6 /*nodearraylist4*/;
   variable14 = TAG_Bool(( variable13 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable13 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction189___action, 9276); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction189___action, LOCATE_parser, 9281); nit_exit(1);}
   variable14 =  variable5 /*nodearraylist5*/;
   variable15 = TAG_Bool(( variable14 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable14 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction189___action, 9278); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction189___action, LOCATE_parser, 9283); nit_exit(1);}
   variable15 =  variable2 /*nodearraylist8*/;
   variable16 = TAG_Bool(( variable15 /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable15 /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction189___action, 9280); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction189___action, LOCATE_parser, 9285); nit_exit(1);}
   variable17 = NEW_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable10 /*pdocnode2*/,  NIT_NULL /*null*/,  variable11 /*pvisibilitynode4*/,  variable12 /*tkwmethnode5*/,  variable13 /*pmethidnode6*/,  variable14 /*psignaturenode7*/,  variable15 /*pexprnode8*/); /*new AConcreteMethPropdef*/
   variable16 = variable17;
   variable1 =  variable16 /*ppropdefnode1*/ /*node_list=*/;
@@ -17445,7 +17458,7 @@ void parser___ReduceAction189___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction189___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction189___init, 9293};
+  struct trace_t trace = {NULL, LOCATE_parser, 9298, LOCATE_parser___ReduceAction189___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction189].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction189].i] = 1;
@@ -17453,7 +17466,7 @@ void parser___ReduceAction189___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction190___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction190___action, 9297};
+  struct trace_t trace = {NULL, LOCATE_parser, 9302, LOCATE_parser___ReduceAction190___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17497,25 +17510,25 @@ void parser___ReduceAction190___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*pdocnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pdocnode2*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction190___action, 9310); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction190___action, LOCATE_parser, 9315); nit_exit(1);}
   variable12 =  variable9 /*nodearraylist2*/;
   variable13 = TAG_Bool(( variable12 /*tkwredefnode3*/==NIT_NULL) || VAL_ISA( variable12 /*tkwredefnode3*/, COLOR_TKwredef, ID_TKwredef)) /*cast TKwredef*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction190___action, 9312); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction190___action, LOCATE_parser, 9317); nit_exit(1);}
   variable13 =  variable8 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*pvisibilitynode4*/==NIT_NULL) || VAL_ISA( variable13 /*pvisibilitynode4*/, COLOR_PVisibility, ID_PVisibility)) /*cast PVisibility*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction190___action, 9314); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction190___action, LOCATE_parser, 9319); nit_exit(1);}
   variable14 =  variable7 /*nodearraylist4*/;
   variable15 = TAG_Bool(( variable14 /*tkwmethnode5*/==NIT_NULL) || VAL_ISA( variable14 /*tkwmethnode5*/, COLOR_TKwmeth, ID_TKwmeth)) /*cast TKwmeth*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction190___action, 9316); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction190___action, LOCATE_parser, 9321); nit_exit(1);}
   variable15 =  variable6 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*pmethidnode6*/==NIT_NULL) || VAL_ISA( variable15 /*pmethidnode6*/, COLOR_PMethid, ID_PMethid)) /*cast PMethid*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction190___action, 9318); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction190___action, LOCATE_parser, 9323); nit_exit(1);}
   variable16 =  variable5 /*nodearraylist6*/;
   variable17 = TAG_Bool(( variable16 /*psignaturenode7*/==NIT_NULL) || VAL_ISA( variable16 /*psignaturenode7*/, COLOR_PSignature, ID_PSignature)) /*cast PSignature*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction190___action, 9320); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction190___action, LOCATE_parser, 9325); nit_exit(1);}
   variable17 =  variable2 /*nodearraylist9*/;
   variable18 = TAG_Bool(( variable17 /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable17 /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction190___action, 9322); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction190___action, LOCATE_parser, 9327); nit_exit(1);}
   variable19 = NEW_parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef( variable11 /*pdocnode2*/,  variable12 /*tkwredefnode3*/,  variable13 /*pvisibilitynode4*/,  variable14 /*tkwmethnode5*/,  variable15 /*pmethidnode6*/,  variable16 /*psignaturenode7*/,  variable17 /*pexprnode8*/); /*new AConcreteMethPropdef*/
   variable18 = variable19;
   variable1 =  variable18 /*ppropdefnode1*/ /*node_list=*/;
@@ -17525,7 +17538,7 @@ void parser___ReduceAction190___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction190___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction190___init, 9335};
+  struct trace_t trace = {NULL, LOCATE_parser, 9340, LOCATE_parser___ReduceAction190___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction190].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction190].i] = 1;
@@ -17533,7 +17546,7 @@ void parser___ReduceAction190___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction191___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction191___action, 9339};
+  struct trace_t trace = {NULL, LOCATE_parser, 9344, LOCATE_parser___ReduceAction191___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17550,7 +17563,7 @@ void parser___ReduceAction191___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction191___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction191___init, 9347};
+  struct trace_t trace = {NULL, LOCATE_parser, 9352, LOCATE_parser___ReduceAction191___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction191].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction191].i] = 1;
@@ -17558,7 +17571,7 @@ void parser___ReduceAction191___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction192___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction192___action, 9351};
+  struct trace_t trace = {NULL, LOCATE_parser, 9356, LOCATE_parser___ReduceAction192___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17575,7 +17588,7 @@ void parser___ReduceAction192___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tkwprivatenode2*/==NIT_NULL) || VAL_ISA( variable4 /*tkwprivatenode2*/, COLOR_TKwprivate, ID_TKwprivate)) /*cast TKwprivate*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction192___action, 9357); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction192___action, LOCATE_parser, 9362); nit_exit(1);}
   variable6 = NEW_parser_prod___APrivateVisibility___init_aprivatevisibility( variable4 /*tkwprivatenode2*/); /*new APrivateVisibility*/
   variable5 = variable6;
   variable1 =  variable5 /*pvisibilitynode1*/ /*node_list=*/;
@@ -17585,7 +17598,7 @@ void parser___ReduceAction192___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction192___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction192___init, 9364};
+  struct trace_t trace = {NULL, LOCATE_parser, 9369, LOCATE_parser___ReduceAction192___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction192].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction192].i] = 1;
@@ -17593,7 +17606,7 @@ void parser___ReduceAction192___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction193___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction193___action, 9368};
+  struct trace_t trace = {NULL, LOCATE_parser, 9373, LOCATE_parser___ReduceAction193___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17610,7 +17623,7 @@ void parser___ReduceAction193___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tkwprotectednode2*/==NIT_NULL) || VAL_ISA( variable4 /*tkwprotectednode2*/, COLOR_TKwprotected, ID_TKwprotected)) /*cast TKwprotected*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction193___action, 9374); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction193___action, LOCATE_parser, 9379); nit_exit(1);}
   variable6 = NEW_parser_prod___AProtectedVisibility___init_aprotectedvisibility( variable4 /*tkwprotectednode2*/); /*new AProtectedVisibility*/
   variable5 = variable6;
   variable1 =  variable5 /*pvisibilitynode1*/ /*node_list=*/;
@@ -17620,7 +17633,7 @@ void parser___ReduceAction193___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction193___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction193___init, 9381};
+  struct trace_t trace = {NULL, LOCATE_parser, 9386, LOCATE_parser___ReduceAction193___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction193].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction193].i] = 1;
@@ -17628,7 +17641,7 @@ void parser___ReduceAction193___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction194___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction194___action, 9385};
+  struct trace_t trace = {NULL, LOCATE_parser, 9390, LOCATE_parser___ReduceAction194___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17645,7 +17658,7 @@ void parser___ReduceAction194___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tkwintrudenode2*/==NIT_NULL) || VAL_ISA( variable4 /*tkwintrudenode2*/, COLOR_TKwintrude, ID_TKwintrude)) /*cast TKwintrude*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction194___action, 9391); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction194___action, LOCATE_parser, 9396); nit_exit(1);}
   variable6 = NEW_parser_prod___AIntrudeVisibility___init_aintrudevisibility( variable4 /*tkwintrudenode2*/); /*new AIntrudeVisibility*/
   variable5 = variable6;
   variable1 =  variable5 /*pvisibilitynode1*/ /*node_list=*/;
@@ -17655,7 +17668,7 @@ void parser___ReduceAction194___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction194___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction194___init, 9398};
+  struct trace_t trace = {NULL, LOCATE_parser, 9403, LOCATE_parser___ReduceAction194___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction194].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction194].i] = 1;
@@ -17663,7 +17676,7 @@ void parser___ReduceAction194___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction195___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction195___action, 9402};
+  struct trace_t trace = {NULL, LOCATE_parser, 9407, LOCATE_parser___ReduceAction195___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17677,7 +17690,7 @@ void parser___ReduceAction195___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tidnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction195___action, 9407); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction195___action, LOCATE_parser, 9412); nit_exit(1);}
   variable5 = NEW_parser_prod___AIdMethid___init_aidmethid( variable3 /*tidnode2*/); /*new AIdMethid*/
   variable4 = variable5;
   variable1 =  variable4 /*pmethidnode1*/ /*node_list=*/;
@@ -17687,7 +17700,7 @@ void parser___ReduceAction195___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction195___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction195___init, 9414};
+  struct trace_t trace = {NULL, LOCATE_parser, 9419, LOCATE_parser___ReduceAction195___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction195].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction195].i] = 1;
@@ -17695,7 +17708,7 @@ void parser___ReduceAction195___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction196___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction196___action, 9418};
+  struct trace_t trace = {NULL, LOCATE_parser, 9423, LOCATE_parser___ReduceAction196___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17709,7 +17722,7 @@ void parser___ReduceAction196___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tplusnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tplusnode2*/, COLOR_TPlus, ID_TPlus)) /*cast TPlus*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction196___action, 9423); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction196___action, LOCATE_parser, 9428); nit_exit(1);}
   variable5 = NEW_parser_prod___APlusMethid___init_aplusmethid( variable3 /*tplusnode2*/); /*new APlusMethid*/
   variable4 = variable5;
   variable1 =  variable4 /*pmethidnode1*/ /*node_list=*/;
@@ -17719,7 +17732,7 @@ void parser___ReduceAction196___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction196___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction196___init, 9430};
+  struct trace_t trace = {NULL, LOCATE_parser, 9435, LOCATE_parser___ReduceAction196___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction196].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction196].i] = 1;
@@ -17727,7 +17740,7 @@ void parser___ReduceAction196___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction197___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction197___action, 9434};
+  struct trace_t trace = {NULL, LOCATE_parser, 9439, LOCATE_parser___ReduceAction197___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17741,7 +17754,7 @@ void parser___ReduceAction197___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tminusnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tminusnode2*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction197___action, 9439); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction197___action, LOCATE_parser, 9444); nit_exit(1);}
   variable5 = NEW_parser_prod___AMinusMethid___init_aminusmethid( variable3 /*tminusnode2*/); /*new AMinusMethid*/
   variable4 = variable5;
   variable1 =  variable4 /*pmethidnode1*/ /*node_list=*/;
@@ -17751,7 +17764,7 @@ void parser___ReduceAction197___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction197___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction197___init, 9446};
+  struct trace_t trace = {NULL, LOCATE_parser, 9451, LOCATE_parser___ReduceAction197___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction197].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction197].i] = 1;
@@ -17759,7 +17772,7 @@ void parser___ReduceAction197___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction198___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction198___action, 9450};
+  struct trace_t trace = {NULL, LOCATE_parser, 9455, LOCATE_parser___ReduceAction198___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17773,7 +17786,7 @@ void parser___ReduceAction198___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tstarnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tstarnode2*/, COLOR_TStar, ID_TStar)) /*cast TStar*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction198___action, 9455); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction198___action, LOCATE_parser, 9460); nit_exit(1);}
   variable5 = NEW_parser_prod___AStarMethid___init_astarmethid( variable3 /*tstarnode2*/); /*new AStarMethid*/
   variable4 = variable5;
   variable1 =  variable4 /*pmethidnode1*/ /*node_list=*/;
@@ -17783,7 +17796,7 @@ void parser___ReduceAction198___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction198___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction198___init, 9462};
+  struct trace_t trace = {NULL, LOCATE_parser, 9467, LOCATE_parser___ReduceAction198___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction198].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction198].i] = 1;
@@ -17791,7 +17804,7 @@ void parser___ReduceAction198___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction199___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction199___action, 9466};
+  struct trace_t trace = {NULL, LOCATE_parser, 9471, LOCATE_parser___ReduceAction199___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17805,7 +17818,7 @@ void parser___ReduceAction199___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tslashnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tslashnode2*/, COLOR_TSlash, ID_TSlash)) /*cast TSlash*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction199___action, 9471); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction199___action, LOCATE_parser, 9476); nit_exit(1);}
   variable5 = NEW_parser_prod___ASlashMethid___init_aslashmethid( variable3 /*tslashnode2*/); /*new ASlashMethid*/
   variable4 = variable5;
   variable1 =  variable4 /*pmethidnode1*/ /*node_list=*/;
@@ -17815,7 +17828,7 @@ void parser___ReduceAction199___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction199___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction199___init, 9478};
+  struct trace_t trace = {NULL, LOCATE_parser, 9483, LOCATE_parser___ReduceAction199___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction199].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction199].i] = 1;
@@ -17823,7 +17836,7 @@ void parser___ReduceAction199___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction200___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction200___action, 9482};
+  struct trace_t trace = {NULL, LOCATE_parser, 9487, LOCATE_parser___ReduceAction200___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17837,7 +17850,7 @@ void parser___ReduceAction200___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tpercentnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tpercentnode2*/, COLOR_TPercent, ID_TPercent)) /*cast TPercent*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction200___action, 9487); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction200___action, LOCATE_parser, 9492); nit_exit(1);}
   variable5 = NEW_parser_prod___APercentMethid___init_apercentmethid( variable3 /*tpercentnode2*/); /*new APercentMethid*/
   variable4 = variable5;
   variable1 =  variable4 /*pmethidnode1*/ /*node_list=*/;
@@ -17847,7 +17860,7 @@ void parser___ReduceAction200___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction200___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction200___init, 9494};
+  struct trace_t trace = {NULL, LOCATE_parser, 9499, LOCATE_parser___ReduceAction200___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction200].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction200].i] = 1;
@@ -17855,7 +17868,7 @@ void parser___ReduceAction200___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction201___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction201___action, 9498};
+  struct trace_t trace = {NULL, LOCATE_parser, 9503, LOCATE_parser___ReduceAction201___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17869,7 +17882,7 @@ void parser___ReduceAction201___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*teqnode2*/==NIT_NULL) || VAL_ISA( variable3 /*teqnode2*/, COLOR_TEq, ID_TEq)) /*cast TEq*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction201___action, 9503); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction201___action, LOCATE_parser, 9508); nit_exit(1);}
   variable5 = NEW_parser_prod___AEqMethid___init_aeqmethid( variable3 /*teqnode2*/); /*new AEqMethid*/
   variable4 = variable5;
   variable1 =  variable4 /*pmethidnode1*/ /*node_list=*/;
@@ -17879,7 +17892,7 @@ void parser___ReduceAction201___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction201___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction201___init, 9510};
+  struct trace_t trace = {NULL, LOCATE_parser, 9515, LOCATE_parser___ReduceAction201___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction201].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction201].i] = 1;
@@ -17887,7 +17900,7 @@ void parser___ReduceAction201___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction202___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction202___action, 9514};
+  struct trace_t trace = {NULL, LOCATE_parser, 9519, LOCATE_parser___ReduceAction202___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17901,7 +17914,7 @@ void parser___ReduceAction202___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tnenode2*/==NIT_NULL) || VAL_ISA( variable3 /*tnenode2*/, COLOR_TNe, ID_TNe)) /*cast TNe*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction202___action, 9519); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction202___action, LOCATE_parser, 9524); nit_exit(1);}
   variable5 = NEW_parser_prod___ANeMethid___init_anemethid( variable3 /*tnenode2*/); /*new ANeMethid*/
   variable4 = variable5;
   variable1 =  variable4 /*pmethidnode1*/ /*node_list=*/;
@@ -17911,7 +17924,7 @@ void parser___ReduceAction202___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction202___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction202___init, 9526};
+  struct trace_t trace = {NULL, LOCATE_parser, 9531, LOCATE_parser___ReduceAction202___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction202].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction202].i] = 1;
@@ -17919,7 +17932,7 @@ void parser___ReduceAction202___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction203___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction203___action, 9530};
+  struct trace_t trace = {NULL, LOCATE_parser, 9535, LOCATE_parser___ReduceAction203___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17933,7 +17946,7 @@ void parser___ReduceAction203___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tlenode2*/==NIT_NULL) || VAL_ISA( variable3 /*tlenode2*/, COLOR_TLe, ID_TLe)) /*cast TLe*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction203___action, 9535); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction203___action, LOCATE_parser, 9540); nit_exit(1);}
   variable5 = NEW_parser_prod___ALeMethid___init_alemethid( variable3 /*tlenode2*/); /*new ALeMethid*/
   variable4 = variable5;
   variable1 =  variable4 /*pmethidnode1*/ /*node_list=*/;
@@ -17943,7 +17956,7 @@ void parser___ReduceAction203___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction203___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction203___init, 9542};
+  struct trace_t trace = {NULL, LOCATE_parser, 9547, LOCATE_parser___ReduceAction203___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction203].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction203].i] = 1;
@@ -17951,7 +17964,7 @@ void parser___ReduceAction203___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction204___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction204___action, 9546};
+  struct trace_t trace = {NULL, LOCATE_parser, 9551, LOCATE_parser___ReduceAction204___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17965,7 +17978,7 @@ void parser___ReduceAction204___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tgenode2*/==NIT_NULL) || VAL_ISA( variable3 /*tgenode2*/, COLOR_TGe, ID_TGe)) /*cast TGe*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction204___action, 9551); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction204___action, LOCATE_parser, 9556); nit_exit(1);}
   variable5 = NEW_parser_prod___AGeMethid___init_agemethid( variable3 /*tgenode2*/); /*new AGeMethid*/
   variable4 = variable5;
   variable1 =  variable4 /*pmethidnode1*/ /*node_list=*/;
@@ -17975,7 +17988,7 @@ void parser___ReduceAction204___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction204___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction204___init, 9558};
+  struct trace_t trace = {NULL, LOCATE_parser, 9563, LOCATE_parser___ReduceAction204___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction204].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction204].i] = 1;
@@ -17983,7 +17996,7 @@ void parser___ReduceAction204___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction205___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction205___action, 9562};
+  struct trace_t trace = {NULL, LOCATE_parser, 9567, LOCATE_parser___ReduceAction205___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -17997,7 +18010,7 @@ void parser___ReduceAction205___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tltnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tltnode2*/, COLOR_TLt, ID_TLt)) /*cast TLt*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction205___action, 9567); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction205___action, LOCATE_parser, 9572); nit_exit(1);}
   variable5 = NEW_parser_prod___ALtMethid___init_altmethid( variable3 /*tltnode2*/); /*new ALtMethid*/
   variable4 = variable5;
   variable1 =  variable4 /*pmethidnode1*/ /*node_list=*/;
@@ -18007,7 +18020,7 @@ void parser___ReduceAction205___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction205___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction205___init, 9574};
+  struct trace_t trace = {NULL, LOCATE_parser, 9579, LOCATE_parser___ReduceAction205___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction205].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction205].i] = 1;
@@ -18015,7 +18028,7 @@ void parser___ReduceAction205___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction206___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction206___action, 9578};
+  struct trace_t trace = {NULL, LOCATE_parser, 9583, LOCATE_parser___ReduceAction206___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18029,7 +18042,7 @@ void parser___ReduceAction206___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tgtnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tgtnode2*/, COLOR_TGt, ID_TGt)) /*cast TGt*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction206___action, 9583); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction206___action, LOCATE_parser, 9588); nit_exit(1);}
   variable5 = NEW_parser_prod___AGtMethid___init_agtmethid( variable3 /*tgtnode2*/); /*new AGtMethid*/
   variable4 = variable5;
   variable1 =  variable4 /*pmethidnode1*/ /*node_list=*/;
@@ -18039,7 +18052,7 @@ void parser___ReduceAction206___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction206___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction206___init, 9590};
+  struct trace_t trace = {NULL, LOCATE_parser, 9595, LOCATE_parser___ReduceAction206___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction206].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction206].i] = 1;
@@ -18047,7 +18060,7 @@ void parser___ReduceAction206___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction207___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction207___action, 9594};
+  struct trace_t trace = {NULL, LOCATE_parser, 9599, LOCATE_parser___ReduceAction207___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18065,10 +18078,10 @@ void parser___ReduceAction207___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tobranode2*/==NIT_NULL) || VAL_ISA( variable4 /*tobranode2*/, COLOR_TObra, ID_TObra)) /*cast TObra*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction207___action, 9600); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction207___action, LOCATE_parser, 9605); nit_exit(1);}
   variable5 =  variable2 /*nodearraylist2*/;
   variable6 = TAG_Bool(( variable5 /*tcbranode3*/==NIT_NULL) || VAL_ISA( variable5 /*tcbranode3*/, COLOR_TCbra, ID_TCbra)) /*cast TCbra*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction207___action, 9602); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction207___action, LOCATE_parser, 9607); nit_exit(1);}
   variable7 = NEW_parser_prod___ABraMethid___init_abramethid( variable4 /*tobranode2*/,  variable5 /*tcbranode3*/); /*new ABraMethid*/
   variable6 = variable7;
   variable1 =  variable6 /*pmethidnode1*/ /*node_list=*/;
@@ -18078,7 +18091,7 @@ void parser___ReduceAction207___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction207___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction207___init, 9610};
+  struct trace_t trace = {NULL, LOCATE_parser, 9615, LOCATE_parser___ReduceAction207___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction207].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction207].i] = 1;
@@ -18086,7 +18099,7 @@ void parser___ReduceAction207___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction208___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction208___action, 9614};
+  struct trace_t trace = {NULL, LOCATE_parser, 9619, LOCATE_parser___ReduceAction208___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18100,7 +18113,7 @@ void parser___ReduceAction208___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tstarshipnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tstarshipnode2*/, COLOR_TStarship, ID_TStarship)) /*cast TStarship*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction208___action, 9619); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction208___action, LOCATE_parser, 9624); nit_exit(1);}
   variable5 = NEW_parser_prod___AStarshipMethid___init_astarshipmethid( variable3 /*tstarshipnode2*/); /*new AStarshipMethid*/
   variable4 = variable5;
   variable1 =  variable4 /*pmethidnode1*/ /*node_list=*/;
@@ -18110,7 +18123,7 @@ void parser___ReduceAction208___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction208___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction208___init, 9626};
+  struct trace_t trace = {NULL, LOCATE_parser, 9631, LOCATE_parser___ReduceAction208___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction208].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction208].i] = 1;
@@ -18118,7 +18131,7 @@ void parser___ReduceAction208___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction209___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction209___action, 9630};
+  struct trace_t trace = {NULL, LOCATE_parser, 9635, LOCATE_parser___ReduceAction209___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18136,10 +18149,10 @@ void parser___ReduceAction209___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tidnode2*/==NIT_NULL) || VAL_ISA( variable4 /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction209___action, 9636); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction209___action, LOCATE_parser, 9641); nit_exit(1);}
   variable5 =  variable2 /*nodearraylist2*/;
   variable6 = TAG_Bool(( variable5 /*tassignnode3*/==NIT_NULL) || VAL_ISA( variable5 /*tassignnode3*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction209___action, 9638); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction209___action, LOCATE_parser, 9643); nit_exit(1);}
   variable7 = NEW_parser_prod___AAssignMethid___init_aassignmethid( variable4 /*tidnode2*/,  variable5 /*tassignnode3*/); /*new AAssignMethid*/
   variable6 = variable7;
   variable1 =  variable6 /*pmethidnode1*/ /*node_list=*/;
@@ -18149,7 +18162,7 @@ void parser___ReduceAction209___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction209___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction209___init, 9646};
+  struct trace_t trace = {NULL, LOCATE_parser, 9651, LOCATE_parser___ReduceAction209___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction209].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction209].i] = 1;
@@ -18157,7 +18170,7 @@ void parser___ReduceAction209___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction210___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction210___action, 9650};
+  struct trace_t trace = {NULL, LOCATE_parser, 9655, LOCATE_parser___ReduceAction210___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18179,13 +18192,13 @@ void parser___ReduceAction210___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tobranode2*/==NIT_NULL) || VAL_ISA( variable5 /*tobranode2*/, COLOR_TObra, ID_TObra)) /*cast TObra*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction210___action, 9657); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction210___action, LOCATE_parser, 9662); nit_exit(1);}
   variable6 =  variable3 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*tcbranode3*/==NIT_NULL) || VAL_ISA( variable6 /*tcbranode3*/, COLOR_TCbra, ID_TCbra)) /*cast TCbra*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction210___action, 9659); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction210___action, LOCATE_parser, 9664); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist3*/;
   variable8 = TAG_Bool(( variable7 /*tassignnode4*/==NIT_NULL) || VAL_ISA( variable7 /*tassignnode4*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction210___action, 9661); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction210___action, LOCATE_parser, 9666); nit_exit(1);}
   variable9 = NEW_parser_prod___ABraassignMethid___init_abraassignmethid( variable5 /*tobranode2*/,  variable6 /*tcbranode3*/,  variable7 /*tassignnode4*/); /*new ABraassignMethid*/
   variable8 = variable9;
   variable1 =  variable8 /*pmethidnode1*/ /*node_list=*/;
@@ -18195,7 +18208,7 @@ void parser___ReduceAction210___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction210___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction210___init, 9670};
+  struct trace_t trace = {NULL, LOCATE_parser, 9675, LOCATE_parser___ReduceAction210___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction210].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction210].i] = 1;
@@ -18203,7 +18216,7 @@ void parser___ReduceAction210___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction211___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction211___action, 9674};
+  struct trace_t trace = {NULL, LOCATE_parser, 9679, LOCATE_parser___ReduceAction211___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18212,7 +18225,7 @@ void parser___ReduceAction211___action(val_t  self, val_t  param0) {
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   variable1 =  NIT_NULL /*null*/;
-  variable3 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable3 = NEW_array___Array___init(); /*new Array[E]*/
   variable2 = variable3;
   variable4 = NEW_parser_prod___ASignature___init_asignature( variable2 /*listnode2*/,  NIT_NULL /*null*/); /*new ASignature*/
   variable3 = variable4;
@@ -18223,7 +18236,7 @@ void parser___ReduceAction211___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction211___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction211___init, 9685};
+  struct trace_t trace = {NULL, LOCATE_parser, 9690, LOCATE_parser___ReduceAction211___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction211].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction211].i] = 1;
@@ -18231,7 +18244,7 @@ void parser___ReduceAction211___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction212___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction212___action, 9689};
+  struct trace_t trace = {NULL, LOCATE_parser, 9694, LOCATE_parser___ReduceAction212___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18244,18 +18257,18 @@ void parser___ReduceAction212___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*listnode2*/==NIT_NULL) || VAL_ISA( variable4 /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction212___action, 9695); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable4 /*listnode2*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable4 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable4 /*listnode2*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction212___action, LOCATE_parser, 9700); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable4 /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable4 /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    variable5 = ((array___AbstractArray___is_empty_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable3 /*listnode3*/) /*Array::is_empty*/;
+    variable5 = ((array___AbstractArray___is_empty_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable3 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable5)) { /*if*/
       variable3 =  variable4 /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable3 /*listnode3*/,  variable4 /*listnode2*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable3 /*listnode3*/,  variable4 /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable6 = NEW_parser_prod___ASignature___init_asignature( variable3 /*listnode3*/,  NIT_NULL /*null*/); /*new ASignature*/
@@ -18267,7 +18280,7 @@ void parser___ReduceAction212___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction212___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction212___init, 9710};
+  struct trace_t trace = {NULL, LOCATE_parser, 9715, LOCATE_parser___ReduceAction212___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction212].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction212].i] = 1;
@@ -18275,7 +18288,7 @@ void parser___ReduceAction212___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction213___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction213___action, 9714};
+  struct trace_t trace = {NULL, LOCATE_parser, 9719, LOCATE_parser___ReduceAction213___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18288,11 +18301,11 @@ void parser___ReduceAction213___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable4 /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction213___action, 9720); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction213___action, LOCATE_parser, 9725); nit_exit(1);}
   variable6 = NEW_parser_prod___ASignature___init_asignature( variable3 /*listnode2*/,  variable4 /*ptypenode3*/); /*new ASignature*/
   variable5 = variable6;
   variable1 =  variable5 /*psignaturenode1*/ /*node_list=*/;
@@ -18302,7 +18315,7 @@ void parser___ReduceAction213___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction213___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction213___init, 9728};
+  struct trace_t trace = {NULL, LOCATE_parser, 9733, LOCATE_parser___ReduceAction213___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction213].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction213].i] = 1;
@@ -18310,7 +18323,7 @@ void parser___ReduceAction213___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction214___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction214___action, 9732};
+  struct trace_t trace = {NULL, LOCATE_parser, 9737, LOCATE_parser___ReduceAction214___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18327,23 +18340,23 @@ void parser___ReduceAction214___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode2*/==NIT_NULL) || VAL_ISA( variable5 /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction214___action, 9739); nit_exit(1);}
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode2*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode2*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction214___action, LOCATE_parser, 9744); nit_exit(1);}
+  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable6)) { /*if*/
-    variable6 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable6 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable6)) { /*if*/
       variable4 =  variable5 /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode2*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable6 /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction214___action, 9748); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction214___action, LOCATE_parser, 9753); nit_exit(1);}
   variable8 = NEW_parser_prod___ASignature___init_asignature( variable4 /*listnode3*/,  variable6 /*ptypenode4*/); /*new ASignature*/
   variable7 = variable8;
   variable1 =  variable7 /*psignaturenode1*/ /*node_list=*/;
@@ -18353,7 +18366,7 @@ void parser___ReduceAction214___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction214___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction214___init, 9756};
+  struct trace_t trace = {NULL, LOCATE_parser, 9761, LOCATE_parser___ReduceAction214___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction214].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction214].i] = 1;
@@ -18361,7 +18374,7 @@ void parser___ReduceAction214___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction215___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction215___action, 9760};
+  struct trace_t trace = {NULL, LOCATE_parser, 9765, LOCATE_parser___ReduceAction215___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18385,14 +18398,14 @@ void parser___ReduceAction215___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable4 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*pparamnode1*/==NIT_NULL) || VAL_ISA( variable8 /*pparamnode1*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction215___action, 9770); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable8 /*pparamnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pparamnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pparamnode1*/,COLOR_kernel___Object_____eqeq))( variable8 /*pparamnode1*/,  NIT_NULL /*null*/) /*PParam::==*/)))))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction215___action, LOCATE_parser, 9775); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable8 /*pparamnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pparamnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pparamnode1*/,COLOR_kernel___Object_____eqeq))( variable8 /*pparamnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode2*/,  variable8 /*pparamnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode2*/,  variable8 /*pparamnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable7 /*listnode2*/ /*node_list=*/;
   variable9 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(18)) /*Parser::go_to*/;
@@ -18401,7 +18414,7 @@ void parser___ReduceAction215___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction215___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction215___init, 9777};
+  struct trace_t trace = {NULL, LOCATE_parser, 9782, LOCATE_parser___ReduceAction215___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction215].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction215].i] = 1;
@@ -18409,7 +18422,7 @@ void parser___ReduceAction215___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction216___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction216___action, 9781};
+  struct trace_t trace = {NULL, LOCATE_parser, 9786, LOCATE_parser___ReduceAction216___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18437,25 +18450,25 @@ void parser___ReduceAction216___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable8 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable5 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*pparamnode1*/==NIT_NULL) || VAL_ISA( variable9 /*pparamnode1*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction216___action, 9792); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction216___action, LOCATE_parser, 9797); nit_exit(1);}
   variable10 =  variable4 /*nodearraylist4*/;
   variable11 = TAG_Bool(( variable10 /*listnode2*/==NIT_NULL) || VAL_ISA( variable10 /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction216___action, 9794); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable9 /*pparamnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pparamnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pparamnode1*/,COLOR_kernel___Object_____eqeq))( variable9 /*pparamnode1*/,  NIT_NULL /*null*/) /*PParam::==*/)))))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction216___action, LOCATE_parser, 9799); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable9 /*pparamnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pparamnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pparamnode1*/,COLOR_kernel___Object_____eqeq))( variable9 /*pparamnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode3*/,  variable9 /*pparamnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode3*/,  variable9 /*pparamnode1*/) /*AbstractArray::add*/;
   }
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode2*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode2*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode3*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable8 =  variable10 /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode3*/,  variable10 /*listnode2*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode3*/,  variable10 /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable1 =  variable8 /*listnode3*/ /*node_list=*/;
@@ -18465,7 +18478,7 @@ void parser___ReduceAction216___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction216___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction216___init, 9808};
+  struct trace_t trace = {NULL, LOCATE_parser, 9813, LOCATE_parser___ReduceAction216___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction216].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction216].i] = 1;
@@ -18473,7 +18486,7 @@ void parser___ReduceAction216___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction217___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction217___action, 9812};
+  struct trace_t trace = {NULL, LOCATE_parser, 9817, LOCATE_parser___ReduceAction217___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18490,7 +18503,7 @@ void parser___ReduceAction217___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable1 =  variable5 /*listnode1*/ /*node_list=*/;
   variable6 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(18)) /*Parser::go_to*/;
@@ -18499,7 +18512,7 @@ void parser___ReduceAction217___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction217___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction217___init, 9822};
+  struct trace_t trace = {NULL, LOCATE_parser, 9827, LOCATE_parser___ReduceAction217___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction217].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction217].i] = 1;
@@ -18507,7 +18520,7 @@ void parser___ReduceAction217___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction218___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction218___action, 9826};
+  struct trace_t trace = {NULL, LOCATE_parser, 9831, LOCATE_parser___ReduceAction218___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18526,7 +18539,7 @@ void parser___ReduceAction218___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable2 /*nodearraylist3*/;
   variable6 = TAG_Bool(( variable5 /*pparamnode1*/==NIT_NULL) || VAL_ISA( variable5 /*pparamnode1*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction218___action, 9833); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction218___action, LOCATE_parser, 9838); nit_exit(1);}
   variable1 =  variable5 /*pparamnode1*/ /*node_list=*/;
   variable6 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(19)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable6,  variable1 /*node_list*/) /*Parser::push*/;
@@ -18534,7 +18547,7 @@ void parser___ReduceAction218___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction218___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction218___init, 9837};
+  struct trace_t trace = {NULL, LOCATE_parser, 9842, LOCATE_parser___ReduceAction218___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction218].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction218].i] = 1;
@@ -18542,7 +18555,7 @@ void parser___ReduceAction218___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction219___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction219___action, 9841};
+  struct trace_t trace = {NULL, LOCATE_parser, 9846, LOCATE_parser___ReduceAction219___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18556,7 +18569,7 @@ void parser___ReduceAction219___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tidnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction219___action, 9846); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction219___action, LOCATE_parser, 9851); nit_exit(1);}
   variable5 = NEW_parser_prod___AParam___init_aparam( variable3 /*tidnode2*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AParam*/
   variable4 = variable5;
   variable1 =  variable4 /*pparamnode1*/ /*node_list=*/;
@@ -18566,7 +18579,7 @@ void parser___ReduceAction219___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction219___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction219___init, 9855};
+  struct trace_t trace = {NULL, LOCATE_parser, 9860, LOCATE_parser___ReduceAction219___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction219].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction219].i] = 1;
@@ -18574,7 +18587,7 @@ void parser___ReduceAction219___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction220___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction220___action, 9859};
+  struct trace_t trace = {NULL, LOCATE_parser, 9864, LOCATE_parser___ReduceAction220___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18592,10 +18605,10 @@ void parser___ReduceAction220___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tidnode2*/==NIT_NULL) || VAL_ISA( variable4 /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction220___action, 9865); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction220___action, LOCATE_parser, 9870); nit_exit(1);}
   variable5 =  variable2 /*nodearraylist2*/;
   variable6 = TAG_Bool(( variable5 /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable5 /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction220___action, 9867); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction220___action, LOCATE_parser, 9872); nit_exit(1);}
   variable7 = NEW_parser_prod___AParam___init_aparam( variable4 /*tidnode2*/,  variable5 /*ptypenode3*/,  NIT_NULL /*null*/); /*new AParam*/
   variable6 = variable7;
   variable1 =  variable6 /*pparamnode1*/ /*node_list=*/;
@@ -18605,7 +18618,7 @@ void parser___ReduceAction220___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction220___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction220___init, 9876};
+  struct trace_t trace = {NULL, LOCATE_parser, 9881, LOCATE_parser___ReduceAction220___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction220].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction220].i] = 1;
@@ -18613,7 +18626,7 @@ void parser___ReduceAction220___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction221___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction221___action, 9880};
+  struct trace_t trace = {NULL, LOCATE_parser, 9885, LOCATE_parser___ReduceAction221___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18635,13 +18648,13 @@ void parser___ReduceAction221___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tidnode2*/==NIT_NULL) || VAL_ISA( variable5 /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction221___action, 9887); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction221___action, LOCATE_parser, 9892); nit_exit(1);}
   variable6 =  variable3 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable6 /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction221___action, 9889); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction221___action, LOCATE_parser, 9894); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist3*/;
   variable8 = TAG_Bool(( variable7 /*tdotdotdotnode4*/==NIT_NULL) || VAL_ISA( variable7 /*tdotdotdotnode4*/, COLOR_TDotdotdot, ID_TDotdotdot)) /*cast TDotdotdot*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction221___action, 9891); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction221___action, LOCATE_parser, 9896); nit_exit(1);}
   variable9 = NEW_parser_prod___AParam___init_aparam( variable5 /*tidnode2*/,  variable6 /*ptypenode3*/,  variable7 /*tdotdotdotnode4*/); /*new AParam*/
   variable8 = variable9;
   variable1 =  variable8 /*pparamnode1*/ /*node_list=*/;
@@ -18651,7 +18664,7 @@ void parser___ReduceAction221___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction221___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction221___init, 9900};
+  struct trace_t trace = {NULL, LOCATE_parser, 9905, LOCATE_parser___ReduceAction221___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction221].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction221].i] = 1;
@@ -18659,7 +18672,7 @@ void parser___ReduceAction221___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction222___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction222___action, 9904};
+  struct trace_t trace = {NULL, LOCATE_parser, 9909, LOCATE_parser___ReduceAction222___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18672,11 +18685,11 @@ void parser___ReduceAction222___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tclassidnode2*/==NIT_NULL) || VAL_ISA( variable4 /*tclassidnode2*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction222___action, 9910); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction222___action, LOCATE_parser, 9915); nit_exit(1);}
   variable6 = NEW_parser_prod___AType___init_atype( variable4 /*tclassidnode2*/,  variable3 /*listnode3*/); /*new AType*/
   variable5 = variable6;
   variable1 =  variable5 /*ptypenode1*/ /*node_list=*/;
@@ -18686,7 +18699,7 @@ void parser___ReduceAction222___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction222___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction222___init, 9918};
+  struct trace_t trace = {NULL, LOCATE_parser, 9923, LOCATE_parser___ReduceAction222___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction222].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction222].i] = 1;
@@ -18694,7 +18707,7 @@ void parser___ReduceAction222___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction223___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction223___action, 9922};
+  struct trace_t trace = {NULL, LOCATE_parser, 9927, LOCATE_parser___ReduceAction223___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18723,21 +18736,21 @@ void parser___ReduceAction223___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable8 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable7 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*tclassidnode2*/==NIT_NULL) || VAL_ISA( variable9 /*tclassidnode2*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction223___action, 9933); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction223___action, LOCATE_parser, 9938); nit_exit(1);}
   variable10 =  variable4 /*nodearraylist4*/;
   variable11 = TAG_Bool(( variable10 /*listnode3*/==NIT_NULL) || VAL_ISA( variable10 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction223___action, 9935); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction223___action, LOCATE_parser, 9940); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode4*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable8 =  variable10 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode4*/,  variable10 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode4*/,  variable10 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable12 = NEW_parser_prod___AType___init_atype( variable9 /*tclassidnode2*/,  variable8 /*listnode4*/); /*new AType*/
@@ -18749,7 +18762,7 @@ void parser___ReduceAction223___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction223___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction223___init, 9950};
+  struct trace_t trace = {NULL, LOCATE_parser, 9955, LOCATE_parser___ReduceAction223___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction223].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction223].i] = 1;
@@ -18757,7 +18770,7 @@ void parser___ReduceAction223___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction224___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction224___action, 9954};
+  struct trace_t trace = {NULL, LOCATE_parser, 9959, LOCATE_parser___ReduceAction224___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18769,14 +18782,14 @@ void parser___ReduceAction224___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*ptypenode1*/==NIT_NULL) || VAL_ISA( variable4 /*ptypenode1*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction224___action, 9960); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*ptypenode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*ptypenode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*ptypenode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*ptypenode1*/,  NIT_NULL /*null*/) /*PType::==*/)))))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction224___action, LOCATE_parser, 9965); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*ptypenode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*ptypenode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*ptypenode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*ptypenode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*ptypenode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*ptypenode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable3 /*listnode2*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(22)) /*Parser::go_to*/;
@@ -18785,7 +18798,7 @@ void parser___ReduceAction224___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction224___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction224___init, 9967};
+  struct trace_t trace = {NULL, LOCATE_parser, 9972, LOCATE_parser___ReduceAction224___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction224].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction224].i] = 1;
@@ -18793,7 +18806,7 @@ void parser___ReduceAction224___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction225___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction225___action, 9971};
+  struct trace_t trace = {NULL, LOCATE_parser, 9976, LOCATE_parser___ReduceAction225___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18809,25 +18822,25 @@ void parser___ReduceAction225___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*ptypenode1*/==NIT_NULL) || VAL_ISA( variable5 /*ptypenode1*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction225___action, 9978); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction225___action, LOCATE_parser, 9983); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*listnode2*/==NIT_NULL) || VAL_ISA( variable6 /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction225___action, 9980); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*ptypenode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*ptypenode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*ptypenode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*ptypenode1*/,  NIT_NULL /*null*/) /*PType::==*/)))))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction225___action, LOCATE_parser, 9985); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*ptypenode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*ptypenode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*ptypenode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*ptypenode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable5 /*ptypenode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable5 /*ptypenode1*/) /*AbstractArray::add*/;
   }
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode2*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable6 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode2*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable6 /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable6 /*listnode2*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable6 /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable1 =  variable4 /*listnode3*/ /*node_list=*/;
@@ -18837,7 +18850,7 @@ void parser___ReduceAction225___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction225___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction225___init, 9994};
+  struct trace_t trace = {NULL, LOCATE_parser, 9999, LOCATE_parser___ReduceAction225___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction225].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction225].i] = 1;
@@ -18845,7 +18858,7 @@ void parser___ReduceAction225___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction226___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction226___action, 9998};
+  struct trace_t trace = {NULL, LOCATE_parser, 10003, LOCATE_parser___ReduceAction226___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18864,7 +18877,7 @@ void parser___ReduceAction226___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable2 /*nodearraylist3*/;
   variable6 = TAG_Bool(( variable5 /*ptypenode1*/==NIT_NULL) || VAL_ISA( variable5 /*ptypenode1*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction226___action, 10005); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction226___action, LOCATE_parser, 10010); nit_exit(1);}
   variable1 =  variable5 /*ptypenode1*/ /*node_list=*/;
   variable6 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(23)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable6,  variable1 /*node_list*/) /*Parser::push*/;
@@ -18872,7 +18885,7 @@ void parser___ReduceAction226___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction226___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction226___init, 10009};
+  struct trace_t trace = {NULL, LOCATE_parser, 10014, LOCATE_parser___ReduceAction226___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction226].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction226].i] = 1;
@@ -18880,7 +18893,7 @@ void parser___ReduceAction226___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction227___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction227___action, 10013};
+  struct trace_t trace = {NULL, LOCATE_parser, 10018, LOCATE_parser___ReduceAction227___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18899,7 +18912,7 @@ void parser___ReduceAction227___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable2 /*nodearraylist3*/;
   variable6 = TAG_Bool(( variable5 /*ptypenode1*/==NIT_NULL) || VAL_ISA( variable5 /*ptypenode1*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction227___action, 10020); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction227___action, LOCATE_parser, 10025); nit_exit(1);}
   variable1 =  variable5 /*ptypenode1*/ /*node_list=*/;
   variable6 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(24)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable6,  variable1 /*node_list*/) /*Parser::push*/;
@@ -18907,7 +18920,7 @@ void parser___ReduceAction227___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction227___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction227___init, 10024};
+  struct trace_t trace = {NULL, LOCATE_parser, 10029, LOCATE_parser___ReduceAction227___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction227].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction227].i] = 1;
@@ -18915,7 +18928,7 @@ void parser___ReduceAction227___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction228___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction228___action, 10028};
+  struct trace_t trace = {NULL, LOCATE_parser, 10033, LOCATE_parser___ReduceAction228___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18928,7 +18941,7 @@ void parser___ReduceAction228___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction228___action, 10033); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction228___action, LOCATE_parser, 10038); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(25)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
@@ -18936,7 +18949,7 @@ void parser___ReduceAction228___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction228___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction228___init, 10037};
+  struct trace_t trace = {NULL, LOCATE_parser, 10042, LOCATE_parser___ReduceAction228___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction228].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction228].i] = 1;
@@ -18944,7 +18957,7 @@ void parser___ReduceAction228___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction229___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction229___action, 10041};
+  struct trace_t trace = {NULL, LOCATE_parser, 10046, LOCATE_parser___ReduceAction229___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -18966,14 +18979,14 @@ void parser___ReduceAction229___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable4 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction229___action, 10050); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable7 /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable7 /*pexprnode2*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction229___action, LOCATE_parser, 10055); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable7 /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable7 /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable6 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode3*/,  variable7 /*pexprnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable6 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode3*/,  variable7 /*pexprnode2*/) /*AbstractArray::add*/;
   }
   variable9 = NEW_parser_prod___ABlockExpr___init_ablockexpr( variable6 /*listnode3*/); /*new ABlockExpr*/
   variable8 = variable9;
@@ -18984,7 +18997,7 @@ void parser___ReduceAction229___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction229___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction229___init, 10060};
+  struct trace_t trace = {NULL, LOCATE_parser, 10065, LOCATE_parser___ReduceAction229___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction229].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction229].i] = 1;
@@ -18992,7 +19005,7 @@ void parser___ReduceAction229___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction230___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction230___action, 10064};
+  struct trace_t trace = {NULL, LOCATE_parser, 10069, LOCATE_parser___ReduceAction230___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19018,25 +19031,25 @@ void parser___ReduceAction230___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable5 /*nodearraylist2*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction230___action, 10074); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction230___action, LOCATE_parser, 10079); nit_exit(1);}
   variable9 =  variable4 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*listnode3*/==NIT_NULL) || VAL_ISA( variable9 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction230___action, 10076); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable8 /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable8 /*pexprnode2*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction230___action, LOCATE_parser, 10081); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable8 /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable8 /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode4*/,  variable8 /*pexprnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode4*/,  variable8 /*pexprnode2*/) /*AbstractArray::add*/;
   }
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode4*/) /*Array::is_empty*/;
+    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable10)) { /*if*/
       variable7 =  variable9 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode4*/,  variable9 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode4*/,  variable9 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable11 = NEW_parser_prod___ABlockExpr___init_ablockexpr( variable7 /*listnode4*/); /*new ABlockExpr*/
@@ -19048,7 +19061,7 @@ void parser___ReduceAction230___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction230___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction230___init, 10093};
+  struct trace_t trace = {NULL, LOCATE_parser, 10098, LOCATE_parser___ReduceAction230___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction230].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction230].i] = 1;
@@ -19056,7 +19069,7 @@ void parser___ReduceAction230___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction231___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction231___action, 10097};
+  struct trace_t trace = {NULL, LOCATE_parser, 10102, LOCATE_parser___ReduceAction231___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19076,7 +19089,7 @@ void parser___ReduceAction231___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction231___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction231___init, 10105};
+  struct trace_t trace = {NULL, LOCATE_parser, 10110, LOCATE_parser___ReduceAction231___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction231].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction231].i] = 1;
@@ -19084,7 +19097,7 @@ void parser___ReduceAction231___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction232___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction232___action, 10109};
+  struct trace_t trace = {NULL, LOCATE_parser, 10114, LOCATE_parser___ReduceAction232___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19101,7 +19114,7 @@ void parser___ReduceAction232___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction232___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction232___init, 10116};
+  struct trace_t trace = {NULL, LOCATE_parser, 10121, LOCATE_parser___ReduceAction232___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction232].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction232].i] = 1;
@@ -19109,7 +19122,7 @@ void parser___ReduceAction232___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction233___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction233___action, 10120};
+  struct trace_t trace = {NULL, LOCATE_parser, 10125, LOCATE_parser___ReduceAction233___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19125,7 +19138,7 @@ void parser___ReduceAction233___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist2*/;
   variable5 = TAG_Bool(( variable4 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable4 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction233___action, 10126); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction233___action, LOCATE_parser, 10131); nit_exit(1);}
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(26)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable5,  variable1 /*node_list*/) /*Parser::push*/;
@@ -19133,7 +19146,7 @@ void parser___ReduceAction233___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction233___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction233___init, 10130};
+  struct trace_t trace = {NULL, LOCATE_parser, 10135, LOCATE_parser___ReduceAction233___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction233].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction233].i] = 1;
@@ -19141,7 +19154,7 @@ void parser___ReduceAction233___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction234___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction234___action, 10134};
+  struct trace_t trace = {NULL, LOCATE_parser, 10139, LOCATE_parser___ReduceAction234___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19154,7 +19167,7 @@ void parser___ReduceAction234___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction234___action, 10139); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction234___action, LOCATE_parser, 10144); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(27)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
@@ -19162,7 +19175,7 @@ void parser___ReduceAction234___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction234___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction234___init, 10143};
+  struct trace_t trace = {NULL, LOCATE_parser, 10148, LOCATE_parser___ReduceAction234___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction234].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction234].i] = 1;
@@ -19170,7 +19183,7 @@ void parser___ReduceAction234___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction235___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction235___action, 10147};
+  struct trace_t trace = {NULL, LOCATE_parser, 10152, LOCATE_parser___ReduceAction235___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19183,7 +19196,7 @@ void parser___ReduceAction235___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction235___action, 10152); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction235___action, LOCATE_parser, 10157); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(27)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
@@ -19191,7 +19204,7 @@ void parser___ReduceAction235___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction235___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction235___init, 10156};
+  struct trace_t trace = {NULL, LOCATE_parser, 10161, LOCATE_parser___ReduceAction235___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction235].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction235].i] = 1;
@@ -19199,7 +19212,7 @@ void parser___ReduceAction235___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction236___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction236___action, 10160};
+  struct trace_t trace = {NULL, LOCATE_parser, 10165, LOCATE_parser___ReduceAction236___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19213,7 +19226,7 @@ void parser___ReduceAction236___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwreturnnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwreturnnode2*/, COLOR_TKwreturn, ID_TKwreturn)) /*cast TKwreturn*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction236___action, 10165); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction236___action, LOCATE_parser, 10170); nit_exit(1);}
   variable5 = NEW_parser_prod___AReturnExpr___init_areturnexpr( variable3 /*tkwreturnnode2*/,  NIT_NULL /*null*/); /*new AReturnExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -19223,7 +19236,7 @@ void parser___ReduceAction236___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction236___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction236___init, 10173};
+  struct trace_t trace = {NULL, LOCATE_parser, 10178, LOCATE_parser___ReduceAction236___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction236].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction236].i] = 1;
@@ -19231,7 +19244,7 @@ void parser___ReduceAction236___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction237___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction237___action, 10177};
+  struct trace_t trace = {NULL, LOCATE_parser, 10182, LOCATE_parser___ReduceAction237___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19249,10 +19262,10 @@ void parser___ReduceAction237___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tkwreturnnode2*/==NIT_NULL) || VAL_ISA( variable4 /*tkwreturnnode2*/, COLOR_TKwreturn, ID_TKwreturn)) /*cast TKwreturn*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction237___action, 10183); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction237___action, LOCATE_parser, 10188); nit_exit(1);}
   variable5 =  variable2 /*nodearraylist2*/;
   variable6 = TAG_Bool(( variable5 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable5 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction237___action, 10185); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction237___action, LOCATE_parser, 10190); nit_exit(1);}
   variable7 = NEW_parser_prod___AReturnExpr___init_areturnexpr( variable4 /*tkwreturnnode2*/,  variable5 /*pexprnode3*/); /*new AReturnExpr*/
   variable6 = variable7;
   variable1 =  variable6 /*pexprnode1*/ /*node_list=*/;
@@ -19262,7 +19275,7 @@ void parser___ReduceAction237___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction237___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction237___init, 10193};
+  struct trace_t trace = {NULL, LOCATE_parser, 10198, LOCATE_parser___ReduceAction237___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction237].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction237].i] = 1;
@@ -19270,7 +19283,7 @@ void parser___ReduceAction237___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction238___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction238___action, 10197};
+  struct trace_t trace = {NULL, LOCATE_parser, 10202, LOCATE_parser___ReduceAction238___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19284,7 +19297,7 @@ void parser___ReduceAction238___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwbreaknode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwbreaknode2*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction238___action, 10202); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction238___action, LOCATE_parser, 10207); nit_exit(1);}
   variable5 = NEW_parser_prod___ABreakExpr___init_abreakexpr( variable3 /*tkwbreaknode2*/); /*new ABreakExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -19294,7 +19307,7 @@ void parser___ReduceAction238___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction238___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction238___init, 10209};
+  struct trace_t trace = {NULL, LOCATE_parser, 10214, LOCATE_parser___ReduceAction238___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction238].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction238].i] = 1;
@@ -19302,7 +19315,7 @@ void parser___ReduceAction238___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction239___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction239___action, 10213};
+  struct trace_t trace = {NULL, LOCATE_parser, 10218, LOCATE_parser___ReduceAction239___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19316,7 +19329,7 @@ void parser___ReduceAction239___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwabortnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwabortnode2*/, COLOR_TKwabort, ID_TKwabort)) /*cast TKwabort*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction239___action, 10218); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction239___action, LOCATE_parser, 10223); nit_exit(1);}
   variable5 = NEW_parser_prod___AAbortExpr___init_aabortexpr( variable3 /*tkwabortnode2*/); /*new AAbortExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -19326,7 +19339,7 @@ void parser___ReduceAction239___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction239___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction239___init, 10225};
+  struct trace_t trace = {NULL, LOCATE_parser, 10230, LOCATE_parser___ReduceAction239___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction239].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction239].i] = 1;
@@ -19334,7 +19347,7 @@ void parser___ReduceAction239___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction240___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction240___action, 10229};
+  struct trace_t trace = {NULL, LOCATE_parser, 10234, LOCATE_parser___ReduceAction240___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19348,7 +19361,7 @@ void parser___ReduceAction240___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwcontinuenode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwcontinuenode2*/, COLOR_TKwcontinue, ID_TKwcontinue)) /*cast TKwcontinue*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction240___action, 10234); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction240___action, LOCATE_parser, 10239); nit_exit(1);}
   variable5 = NEW_parser_prod___AContinueExpr___init_acontinueexpr( variable3 /*tkwcontinuenode2*/); /*new AContinueExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -19358,7 +19371,7 @@ void parser___ReduceAction240___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction240___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction240___init, 10241};
+  struct trace_t trace = {NULL, LOCATE_parser, 10246, LOCATE_parser___ReduceAction240___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction240].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction240].i] = 1;
@@ -19366,7 +19379,7 @@ void parser___ReduceAction240___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction241___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction241___action, 10245};
+  struct trace_t trace = {NULL, LOCATE_parser, 10250, LOCATE_parser___ReduceAction241___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19379,7 +19392,7 @@ void parser___ReduceAction241___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction241___action, 10250); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction241___action, LOCATE_parser, 10255); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(27)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
@@ -19387,7 +19400,7 @@ void parser___ReduceAction241___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction241___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction241___init, 10254};
+  struct trace_t trace = {NULL, LOCATE_parser, 10259, LOCATE_parser___ReduceAction241___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction241].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction241].i] = 1;
@@ -19395,7 +19408,7 @@ void parser___ReduceAction241___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction242___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction242___action, 10258};
+  struct trace_t trace = {NULL, LOCATE_parser, 10263, LOCATE_parser___ReduceAction242___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19408,7 +19421,7 @@ void parser___ReduceAction242___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction242___action, 10263); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction242___action, LOCATE_parser, 10268); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(27)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
@@ -19416,7 +19429,7 @@ void parser___ReduceAction242___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction242___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction242___init, 10267};
+  struct trace_t trace = {NULL, LOCATE_parser, 10272, LOCATE_parser___ReduceAction242___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction242].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction242].i] = 1;
@@ -19424,7 +19437,7 @@ void parser___ReduceAction242___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction243___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction243___action, 10271};
+  struct trace_t trace = {NULL, LOCATE_parser, 10276, LOCATE_parser___ReduceAction243___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19437,7 +19450,7 @@ void parser___ReduceAction243___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction243___action, 10276); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction243___action, LOCATE_parser, 10281); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(27)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
@@ -19445,7 +19458,7 @@ void parser___ReduceAction243___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction243___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction243___init, 10280};
+  struct trace_t trace = {NULL, LOCATE_parser, 10285, LOCATE_parser___ReduceAction243___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction243].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction243].i] = 1;
@@ -19453,7 +19466,7 @@ void parser___ReduceAction243___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction244___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction244___action, 10284};
+  struct trace_t trace = {NULL, LOCATE_parser, 10289, LOCATE_parser___ReduceAction244___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19466,7 +19479,7 @@ void parser___ReduceAction244___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction244___action, 10289); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction244___action, LOCATE_parser, 10294); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(27)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
@@ -19474,7 +19487,7 @@ void parser___ReduceAction244___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction244___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction244___init, 10293};
+  struct trace_t trace = {NULL, LOCATE_parser, 10298, LOCATE_parser___ReduceAction244___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction244].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction244].i] = 1;
@@ -19482,7 +19495,7 @@ void parser___ReduceAction244___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction245___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction245___action, 10297};
+  struct trace_t trace = {NULL, LOCATE_parser, 10302, LOCATE_parser___ReduceAction245___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19495,7 +19508,7 @@ void parser___ReduceAction245___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction245___action, 10302); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction245___action, LOCATE_parser, 10307); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(27)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
@@ -19503,7 +19516,7 @@ void parser___ReduceAction245___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction245___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction245___init, 10306};
+  struct trace_t trace = {NULL, LOCATE_parser, 10311, LOCATE_parser___ReduceAction245___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction245].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction245].i] = 1;
@@ -19511,7 +19524,7 @@ void parser___ReduceAction245___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction246___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction246___action, 10310};
+  struct trace_t trace = {NULL, LOCATE_parser, 10315, LOCATE_parser___ReduceAction246___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19538,24 +19551,24 @@ void parser___ReduceAction246___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable6 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction246___action, 10320); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction246___action, LOCATE_parser, 10325); nit_exit(1);}
   variable9 =  variable3 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable9 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction246___action, 10322); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction246___action, LOCATE_parser, 10327); nit_exit(1);}
   variable10 =  variable2 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*listnode4*/==NIT_NULL) || VAL_ISA( variable10 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction246___action, 10324); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction246___action, LOCATE_parser, 10329); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable7 =  variable10 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable12 = NEW_parser_prod___ACallExpr___init_acallexpr( variable8 /*pexprnode2*/,  variable9 /*tidnode3*/,  variable7 /*listnode5*/); /*new ACallExpr*/
@@ -19567,7 +19580,7 @@ void parser___ReduceAction246___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction246___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction246___init, 10340};
+  struct trace_t trace = {NULL, LOCATE_parser, 10345, LOCATE_parser___ReduceAction246___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction246].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction246].i] = 1;
@@ -19575,7 +19588,7 @@ void parser___ReduceAction246___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction247___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction247___action, 10344};
+  struct trace_t trace = {NULL, LOCATE_parser, 10349, LOCATE_parser___ReduceAction247___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19593,23 +19606,23 @@ void parser___ReduceAction247___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable6 = NEW_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable6 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction247___action, 10353); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction247___action, LOCATE_parser, 10358); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*listnode4*/==NIT_NULL) || VAL_ISA( variable7 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction247___action, 10355); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction247___action, LOCATE_parser, 10360); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*Array::is_empty*/;
+    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable8)) { /*if*/
       variable4 =  variable7 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable9 = NEW_parser_prod___ACallExpr___init_acallexpr( variable5 /*pexprnode2*/,  variable6 /*tidnode3*/,  variable4 /*listnode5*/); /*new ACallExpr*/
@@ -19621,7 +19634,7 @@ void parser___ReduceAction247___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction247___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction247___init, 10371};
+  struct trace_t trace = {NULL, LOCATE_parser, 10376, LOCATE_parser___ReduceAction247___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction247].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction247].i] = 1;
@@ -19629,7 +19642,7 @@ void parser___ReduceAction247___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction248___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction248___action, 10375};
+  struct trace_t trace = {NULL, LOCATE_parser, 10380, LOCATE_parser___ReduceAction248___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19646,21 +19659,21 @@ void parser___ReduceAction248___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable5 /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction248___action, 10382); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction248___action, LOCATE_parser, 10387); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*listnode4*/==NIT_NULL) || VAL_ISA( variable6 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction248___action, 10384); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction248___action, LOCATE_parser, 10389); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable6 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable6 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable6 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable8 = NEW_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable5 /*tkwsupernode3*/,  variable4 /*listnode5*/); /*new ASuperExpr*/
@@ -19672,7 +19685,7 @@ void parser___ReduceAction248___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction248___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction248___init, 10400};
+  struct trace_t trace = {NULL, LOCATE_parser, 10405, LOCATE_parser___ReduceAction248___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction248].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction248].i] = 1;
@@ -19680,7 +19693,7 @@ void parser___ReduceAction248___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction249___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction249___action, 10404};
+  struct trace_t trace = {NULL, LOCATE_parser, 10409, LOCATE_parser___ReduceAction249___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19701,24 +19714,24 @@ void parser___ReduceAction249___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable6 =  variable4 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pqualifiednode2*/==NIT_NULL) || VAL_ISA( variable6 /*pqualifiednode2*/, COLOR_PQualified, ID_PQualified)) /*cast PQualified*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction249___action, 10412); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction249___action, LOCATE_parser, 10417); nit_exit(1);}
   variable7 =  variable3 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable7 /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction249___action, 10414); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction249___action, LOCATE_parser, 10419); nit_exit(1);}
   variable8 =  variable2 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*listnode4*/==NIT_NULL) || VAL_ISA( variable8 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction249___action, 10416); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction249___action, LOCATE_parser, 10421); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable5 =  variable8 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable8 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable8 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable10 = NEW_parser_prod___ASuperExpr___init_asuperexpr( variable6 /*pqualifiednode2*/,  variable7 /*tkwsupernode3*/,  variable5 /*listnode5*/); /*new ASuperExpr*/
@@ -19730,7 +19743,7 @@ void parser___ReduceAction249___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction249___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction249___init, 10432};
+  struct trace_t trace = {NULL, LOCATE_parser, 10437, LOCATE_parser___ReduceAction249___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction249].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction249].i] = 1;
@@ -19738,7 +19751,7 @@ void parser___ReduceAction249___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction250___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction250___action, 10436};
+  struct trace_t trace = {NULL, LOCATE_parser, 10441, LOCATE_parser___ReduceAction250___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19765,24 +19778,24 @@ void parser___ReduceAction250___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable6 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction250___action, 10446); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction250___action, LOCATE_parser, 10451); nit_exit(1);}
   variable9 =  variable3 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable9 /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction250___action, 10448); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction250___action, LOCATE_parser, 10453); nit_exit(1);}
   variable10 =  variable2 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*listnode4*/==NIT_NULL) || VAL_ISA( variable10 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction250___action, 10450); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction250___action, LOCATE_parser, 10455); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable7 =  variable10 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable12 = NEW_parser_prod___AInitExpr___init_ainitexpr( variable8 /*pexprnode2*/,  variable9 /*tkwinitnode3*/,  variable7 /*listnode5*/); /*new AInitExpr*/
@@ -19794,7 +19807,7 @@ void parser___ReduceAction250___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction250___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction250___init, 10466};
+  struct trace_t trace = {NULL, LOCATE_parser, 10471, LOCATE_parser___ReduceAction250___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction250].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction250].i] = 1;
@@ -19802,7 +19815,7 @@ void parser___ReduceAction250___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction251___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction251___action, 10470};
+  struct trace_t trace = {NULL, LOCATE_parser, 10475, LOCATE_parser___ReduceAction251___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19820,23 +19833,23 @@ void parser___ReduceAction251___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable6 = NEW_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable6 /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction251___action, 10479); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction251___action, LOCATE_parser, 10484); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*listnode4*/==NIT_NULL) || VAL_ISA( variable7 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction251___action, 10481); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction251___action, LOCATE_parser, 10486); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*Array::is_empty*/;
+    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable8)) { /*if*/
       variable4 =  variable7 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable9 = NEW_parser_prod___AInitExpr___init_ainitexpr( variable5 /*pexprnode2*/,  variable6 /*tkwinitnode3*/,  variable4 /*listnode5*/); /*new AInitExpr*/
@@ -19848,7 +19861,7 @@ void parser___ReduceAction251___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction251___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction251___init, 10497};
+  struct trace_t trace = {NULL, LOCATE_parser, 10502, LOCATE_parser___ReduceAction251___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction251].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction251].i] = 1;
@@ -19856,7 +19869,7 @@ void parser___ReduceAction251___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction252___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction252___action, 10501};
+  struct trace_t trace = {NULL, LOCATE_parser, 10506, LOCATE_parser___ReduceAction252___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19874,10 +19887,10 @@ void parser___ReduceAction252___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable4 /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction252___action, 10507); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction252___action, LOCATE_parser, 10512); nit_exit(1);}
   variable5 =  variable2 /*nodearraylist2*/;
   variable6 = TAG_Bool(( variable5 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable5 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction252___action, 10509); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction252___action, LOCATE_parser, 10514); nit_exit(1);}
   variable7 = NEW_parser_prod___AVardeclExpr___init_avardeclexpr( variable4 /*tkwvarnode2*/,  variable5 /*tidnode3*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AVardeclExpr*/
   variable6 = variable7;
   variable1 =  variable6 /*pexprnode1*/ /*node_list=*/;
@@ -19887,7 +19900,7 @@ void parser___ReduceAction252___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction252___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction252___init, 10520};
+  struct trace_t trace = {NULL, LOCATE_parser, 10525, LOCATE_parser___ReduceAction252___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction252].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction252].i] = 1;
@@ -19895,7 +19908,7 @@ void parser___ReduceAction252___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction253___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction253___action, 10524};
+  struct trace_t trace = {NULL, LOCATE_parser, 10529, LOCATE_parser___ReduceAction253___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19917,13 +19930,13 @@ void parser___ReduceAction253___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable5 /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction253___action, 10531); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction253___action, LOCATE_parser, 10536); nit_exit(1);}
   variable6 =  variable3 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable6 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction253___action, 10533); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction253___action, LOCATE_parser, 10538); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist3*/;
   variable8 = TAG_Bool(( variable7 /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable7 /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction253___action, 10535); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction253___action, LOCATE_parser, 10540); nit_exit(1);}
   variable9 = NEW_parser_prod___AVardeclExpr___init_avardeclexpr( variable5 /*tkwvarnode2*/,  variable6 /*tidnode3*/,  variable7 /*ptypenode4*/,  NIT_NULL /*null*/,  NIT_NULL /*null*/); /*new AVardeclExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -19933,7 +19946,7 @@ void parser___ReduceAction253___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction253___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction253___init, 10546};
+  struct trace_t trace = {NULL, LOCATE_parser, 10551, LOCATE_parser___ReduceAction253___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction253].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction253].i] = 1;
@@ -19941,7 +19954,7 @@ void parser___ReduceAction253___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction254___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction254___action, 10550};
+  struct trace_t trace = {NULL, LOCATE_parser, 10555, LOCATE_parser___ReduceAction254___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -19970,16 +19983,16 @@ void parser___ReduceAction254___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable7 =  variable6 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable7 /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction254___action, 10559); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction254___action, LOCATE_parser, 10564); nit_exit(1);}
   variable8 =  variable5 /*nodearraylist2*/;
   variable9 = TAG_Bool(( variable8 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable8 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction254___action, 10561); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction254___action, LOCATE_parser, 10566); nit_exit(1);}
   variable9 =  variable4 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*tassignnode5*/==NIT_NULL) || VAL_ISA( variable9 /*tassignnode5*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction254___action, 10563); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction254___action, LOCATE_parser, 10568); nit_exit(1);}
   variable10 =  variable2 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable10 /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction254___action, 10565); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction254___action, LOCATE_parser, 10570); nit_exit(1);}
   variable12 = NEW_parser_prod___AVardeclExpr___init_avardeclexpr( variable7 /*tkwvarnode2*/,  variable8 /*tidnode3*/,  NIT_NULL /*null*/,  variable9 /*tassignnode5*/,  variable10 /*pexprnode6*/); /*new AVardeclExpr*/
   variable11 = variable12;
   variable1 =  variable11 /*pexprnode1*/ /*node_list=*/;
@@ -19989,7 +20002,7 @@ void parser___ReduceAction254___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction254___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction254___init, 10576};
+  struct trace_t trace = {NULL, LOCATE_parser, 10581, LOCATE_parser___ReduceAction254___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction254].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction254].i] = 1;
@@ -19997,7 +20010,7 @@ void parser___ReduceAction254___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction255___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction255___action, 10580};
+  struct trace_t trace = {NULL, LOCATE_parser, 10585, LOCATE_parser___ReduceAction255___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -20030,19 +20043,19 @@ void parser___ReduceAction255___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable7 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*tkwvarnode2*/==NIT_NULL) || VAL_ISA( variable8 /*tkwvarnode2*/, COLOR_TKwvar, ID_TKwvar)) /*cast TKwvar*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction255___action, 10590); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction255___action, LOCATE_parser, 10595); nit_exit(1);}
   variable9 =  variable6 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable9 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction255___action, 10592); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction255___action, LOCATE_parser, 10597); nit_exit(1);}
   variable10 =  variable5 /*nodearraylist3*/;
   variable11 = TAG_Bool(( variable10 /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable10 /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction255___action, 10594); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction255___action, LOCATE_parser, 10599); nit_exit(1);}
   variable11 =  variable4 /*nodearraylist4*/;
   variable12 = TAG_Bool(( variable11 /*tassignnode5*/==NIT_NULL) || VAL_ISA( variable11 /*tassignnode5*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction255___action, 10596); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction255___action, LOCATE_parser, 10601); nit_exit(1);}
   variable12 =  variable2 /*nodearraylist6*/;
   variable13 = TAG_Bool(( variable12 /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable12 /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction255___action, 10598); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction255___action, LOCATE_parser, 10603); nit_exit(1);}
   variable14 = NEW_parser_prod___AVardeclExpr___init_avardeclexpr( variable8 /*tkwvarnode2*/,  variable9 /*tidnode3*/,  variable10 /*ptypenode4*/,  variable11 /*tassignnode5*/,  variable12 /*pexprnode6*/); /*new AVardeclExpr*/
   variable13 = variable14;
   variable1 =  variable13 /*pexprnode1*/ /*node_list=*/;
@@ -20052,7 +20065,7 @@ void parser___ReduceAction255___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction255___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction255___init, 10609};
+  struct trace_t trace = {NULL, LOCATE_parser, 10614, LOCATE_parser___ReduceAction255___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction255].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction255].i] = 1;
@@ -20060,7 +20073,7 @@ void parser___ReduceAction255___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction256___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction256___action, 10613};
+  struct trace_t trace = {NULL, LOCATE_parser, 10618, LOCATE_parser___ReduceAction256___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -20092,16 +20105,16 @@ void parser___ReduceAction256___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable7 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction256___action, 10623); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction256___action, LOCATE_parser, 10628); nit_exit(1);}
   variable9 =  variable4 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable9 /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction256___action, 10625); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction256___action, LOCATE_parser, 10630); nit_exit(1);}
   variable10 =  variable3 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*tassignnode4*/==NIT_NULL) || VAL_ISA( variable10 /*tassignnode4*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction256___action, 10627); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction256___action, LOCATE_parser, 10632); nit_exit(1);}
   variable11 =  variable2 /*nodearraylist6*/;
   variable12 = TAG_Bool(( variable11 /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable11 /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction256___action, 10629); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction256___action, LOCATE_parser, 10634); nit_exit(1);}
   variable13 = NEW_parser_prod___AAttrAssignExpr___init_aattrassignexpr( variable8 /*pexprnode2*/,  variable9 /*tattridnode3*/,  variable10 /*tassignnode4*/,  variable11 /*pexprnode5*/); /*new AAttrAssignExpr*/
   variable12 = variable13;
   variable1 =  variable12 /*pexprnode1*/ /*node_list=*/;
@@ -20111,7 +20124,7 @@ void parser___ReduceAction256___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction256___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction256___init, 10639};
+  struct trace_t trace = {NULL, LOCATE_parser, 10644, LOCATE_parser___ReduceAction256___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction256].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction256].i] = 1;
@@ -20119,7 +20132,7 @@ void parser___ReduceAction256___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction257___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction257___action, 10643};
+  struct trace_t trace = {NULL, LOCATE_parser, 10648, LOCATE_parser___ReduceAction257___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -20144,13 +20157,13 @@ void parser___ReduceAction257___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable4 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable6 /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction257___action, 10652); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction257___action, LOCATE_parser, 10657); nit_exit(1);}
   variable7 =  variable3 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*tassignnode4*/==NIT_NULL) || VAL_ISA( variable7 /*tassignnode4*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction257___action, 10654); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction257___action, LOCATE_parser, 10659); nit_exit(1);}
   variable8 =  variable2 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction257___action, 10656); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction257___action, LOCATE_parser, 10661); nit_exit(1);}
   variable10 = NEW_parser_prod___AAttrAssignExpr___init_aattrassignexpr( variable5 /*pexprnode2*/,  variable6 /*tattridnode3*/,  variable7 /*tassignnode4*/,  variable8 /*pexprnode5*/); /*new AAttrAssignExpr*/
   variable9 = variable10;
   variable1 =  variable9 /*pexprnode1*/ /*node_list=*/;
@@ -20160,7 +20173,7 @@ void parser___ReduceAction257___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction257___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction257___init, 10666};
+  struct trace_t trace = {NULL, LOCATE_parser, 10671, LOCATE_parser___ReduceAction257___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction257].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction257].i] = 1;
@@ -20168,7 +20181,7 @@ void parser___ReduceAction257___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction258___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction258___action, 10670};
+  struct trace_t trace = {NULL, LOCATE_parser, 10675, LOCATE_parser___ReduceAction258___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -20203,32 +20216,32 @@ void parser___ReduceAction258___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable9 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable8 = variable9;
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
   variable10 =  variable8 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction258___action, 10682); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction258___action, LOCATE_parser, 10687); nit_exit(1);}
   variable11 =  variable5 /*nodearraylist4*/;
   variable12 = TAG_Bool(( variable11 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable11 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction258___action, 10684); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction258___action, LOCATE_parser, 10689); nit_exit(1);}
   variable12 =  variable4 /*nodearraylist5*/;
   variable13 = TAG_Bool(( variable12 /*listnode4*/==NIT_NULL) || VAL_ISA( variable12 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction258___action, 10686); nit_exit(1);}
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable12 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable12 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable12 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction258___action, LOCATE_parser, 10691); nit_exit(1);}
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable12 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable12 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode5*/) /*Array::is_empty*/;
+    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable13)) { /*if*/
       variable9 =  variable12 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode5*/,  variable12 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode5*/,  variable12 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable13 =  variable3 /*nodearraylist6*/;
   variable14 = TAG_Bool(( variable13 /*tassignnode6*/==NIT_NULL) || VAL_ISA( variable13 /*tassignnode6*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction258___action, 10695); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction258___action, LOCATE_parser, 10700); nit_exit(1);}
   variable14 =  variable2 /*nodearraylist7*/;
   variable15 = TAG_Bool(( variable14 /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable14 /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction258___action, 10697); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction258___action, LOCATE_parser, 10702); nit_exit(1);}
   variable16 = NEW_parser_prod___ACallAssignExpr___init_acallassignexpr( variable10 /*pexprnode2*/,  variable11 /*tidnode3*/,  variable9 /*listnode5*/,  variable13 /*tassignnode6*/,  variable14 /*pexprnode7*/); /*new ACallAssignExpr*/
   variable15 = variable16;
   variable1 =  variable15 /*pexprnode1*/ /*node_list=*/;
@@ -20238,7 +20251,7 @@ void parser___ReduceAction258___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction258___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction258___init, 10708};
+  struct trace_t trace = {NULL, LOCATE_parser, 10713, LOCATE_parser___ReduceAction258___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction258].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction258].i] = 1;
@@ -20246,7 +20259,7 @@ void parser___ReduceAction258___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction259___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction259___action, 10712};
+  struct trace_t trace = {NULL, LOCATE_parser, 10717, LOCATE_parser___ReduceAction259___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -20272,31 +20285,31 @@ void parser___ReduceAction259___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable8 = NEW_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable7 = variable8;
   variable8 =  variable5 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable8 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction259___action, 10723); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction259___action, LOCATE_parser, 10728); nit_exit(1);}
   variable9 =  variable4 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*listnode4*/==NIT_NULL) || VAL_ISA( variable9 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction259___action, 10725); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction259___action, LOCATE_parser, 10730); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode5*/) /*Array::is_empty*/;
+    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable10)) { /*if*/
       variable6 =  variable9 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode5*/,  variable9 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode5*/,  variable9 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable10 =  variable3 /*nodearraylist3*/;
   variable11 = TAG_Bool(( variable10 /*tassignnode6*/==NIT_NULL) || VAL_ISA( variable10 /*tassignnode6*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction259___action, 10734); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction259___action, LOCATE_parser, 10739); nit_exit(1);}
   variable11 =  variable2 /*nodearraylist4*/;
   variable12 = TAG_Bool(( variable11 /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable11 /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction259___action, 10736); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction259___action, LOCATE_parser, 10741); nit_exit(1);}
   variable13 = NEW_parser_prod___ACallAssignExpr___init_acallassignexpr( variable7 /*pexprnode2*/,  variable8 /*tidnode3*/,  variable6 /*listnode5*/,  variable10 /*tassignnode6*/,  variable11 /*pexprnode7*/); /*new ACallAssignExpr*/
   variable12 = variable13;
   variable1 =  variable12 /*pexprnode1*/ /*node_list=*/;
@@ -20306,7 +20319,7 @@ void parser___ReduceAction259___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction259___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction259___init, 10747};
+  struct trace_t trace = {NULL, LOCATE_parser, 10752, LOCATE_parser___ReduceAction259___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction259].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction259].i] = 1;
@@ -20314,7 +20327,7 @@ void parser___ReduceAction259___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction260___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction260___action, 10751};
+  struct trace_t trace = {NULL, LOCATE_parser, 10756, LOCATE_parser___ReduceAction260___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -20339,29 +20352,29 @@ void parser___ReduceAction260___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable5 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction260___action, 10760); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction260___action, LOCATE_parser, 10765); nit_exit(1);}
   variable8 =  variable4 /*nodearraylist2*/;
   variable9 = TAG_Bool(( variable8 /*listnode3*/==NIT_NULL) || VAL_ISA( variable8 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction260___action, 10762); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction260___action, LOCATE_parser, 10767); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode4*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable6 =  variable8 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode4*/,  variable8 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode4*/,  variable8 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable9 =  variable3 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*tassignnode5*/==NIT_NULL) || VAL_ISA( variable9 /*tassignnode5*/, COLOR_TAssign, ID_TAssign)) /*cast TAssign*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction260___action, 10771); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction260___action, LOCATE_parser, 10776); nit_exit(1);}
   variable10 =  variable2 /*nodearraylist4*/;
   variable11 = TAG_Bool(( variable10 /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable10 /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction260___action, 10773); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction260___action, LOCATE_parser, 10778); nit_exit(1);}
   variable12 = NEW_parser_prod___ABraAssignExpr___init_abraassignexpr( variable7 /*pexprnode2*/,  variable6 /*listnode4*/,  variable9 /*tassignnode5*/,  variable10 /*pexprnode6*/); /*new ABraAssignExpr*/
   variable11 = variable12;
   variable1 =  variable11 /*pexprnode1*/ /*node_list=*/;
@@ -20371,7 +20384,7 @@ void parser___ReduceAction260___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction260___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction260___init, 10783};
+  struct trace_t trace = {NULL, LOCATE_parser, 10788, LOCATE_parser___ReduceAction260___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction260].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction260].i] = 1;
@@ -20379,7 +20392,7 @@ void parser___ReduceAction260___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction261___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction261___action, 10787};
+  struct trace_t trace = {NULL, LOCATE_parser, 10792, LOCATE_parser___ReduceAction261___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -20411,16 +20424,16 @@ void parser___ReduceAction261___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable7 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction261___action, 10797); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction261___action, LOCATE_parser, 10802); nit_exit(1);}
   variable9 =  variable4 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable9 /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction261___action, 10799); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction261___action, LOCATE_parser, 10804); nit_exit(1);}
   variable10 =  variable3 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*passignopnode4*/==NIT_NULL) || VAL_ISA( variable10 /*passignopnode4*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction261___action, 10801); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction261___action, LOCATE_parser, 10806); nit_exit(1);}
   variable11 =  variable2 /*nodearraylist6*/;
   variable12 = TAG_Bool(( variable11 /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable11 /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction261___action, 10803); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction261___action, LOCATE_parser, 10808); nit_exit(1);}
   variable13 = NEW_parser_prod___AAttrReassignExpr___init_aattrreassignexpr( variable8 /*pexprnode2*/,  variable9 /*tattridnode3*/,  variable10 /*passignopnode4*/,  variable11 /*pexprnode5*/); /*new AAttrReassignExpr*/
   variable12 = variable13;
   variable1 =  variable12 /*pexprnode1*/ /*node_list=*/;
@@ -20430,7 +20443,7 @@ void parser___ReduceAction261___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction261___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction261___init, 10813};
+  struct trace_t trace = {NULL, LOCATE_parser, 10818, LOCATE_parser___ReduceAction261___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction261].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction261].i] = 1;
@@ -20438,7 +20451,7 @@ void parser___ReduceAction261___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction262___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction262___action, 10817};
+  struct trace_t trace = {NULL, LOCATE_parser, 10822, LOCATE_parser___ReduceAction262___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -20463,13 +20476,13 @@ void parser___ReduceAction262___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable4 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable6 /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction262___action, 10826); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction262___action, LOCATE_parser, 10831); nit_exit(1);}
   variable7 =  variable3 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*passignopnode4*/==NIT_NULL) || VAL_ISA( variable7 /*passignopnode4*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction262___action, 10828); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction262___action, LOCATE_parser, 10833); nit_exit(1);}
   variable8 =  variable2 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction262___action, 10830); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction262___action, LOCATE_parser, 10835); nit_exit(1);}
   variable10 = NEW_parser_prod___AAttrReassignExpr___init_aattrreassignexpr( variable5 /*pexprnode2*/,  variable6 /*tattridnode3*/,  variable7 /*passignopnode4*/,  variable8 /*pexprnode5*/); /*new AAttrReassignExpr*/
   variable9 = variable10;
   variable1 =  variable9 /*pexprnode1*/ /*node_list=*/;
@@ -20479,7 +20492,7 @@ void parser___ReduceAction262___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction262___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction262___init, 10840};
+  struct trace_t trace = {NULL, LOCATE_parser, 10845, LOCATE_parser___ReduceAction262___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction262].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction262].i] = 1;
@@ -20487,7 +20500,7 @@ void parser___ReduceAction262___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction263___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction263___action, 10844};
+  struct trace_t trace = {NULL, LOCATE_parser, 10849, LOCATE_parser___ReduceAction263___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -20522,32 +20535,32 @@ void parser___ReduceAction263___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable9 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable8 = variable9;
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
   variable10 =  variable8 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable10 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction263___action, 10856); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction263___action, LOCATE_parser, 10861); nit_exit(1);}
   variable11 =  variable5 /*nodearraylist4*/;
   variable12 = TAG_Bool(( variable11 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable11 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction263___action, 10858); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction263___action, LOCATE_parser, 10863); nit_exit(1);}
   variable12 =  variable4 /*nodearraylist5*/;
   variable13 = TAG_Bool(( variable12 /*listnode4*/==NIT_NULL) || VAL_ISA( variable12 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction263___action, 10860); nit_exit(1);}
-  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable12 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable12 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable12 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction263___action, LOCATE_parser, 10865); nit_exit(1);}
+  variable13 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable12 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable12 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable12 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable12 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable12 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable12 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable13)) { /*if*/
-    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode5*/) /*Array::is_empty*/;
+    variable13 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable13)) { /*if*/
       variable9 =  variable12 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode5*/,  variable12 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode5*/,  variable12 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable13 =  variable3 /*nodearraylist6*/;
   variable14 = TAG_Bool(( variable13 /*passignopnode6*/==NIT_NULL) || VAL_ISA( variable13 /*passignopnode6*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction263___action, 10869); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction263___action, LOCATE_parser, 10874); nit_exit(1);}
   variable14 =  variable2 /*nodearraylist7*/;
   variable15 = TAG_Bool(( variable14 /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable14 /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction263___action, 10871); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction263___action, LOCATE_parser, 10876); nit_exit(1);}
   variable16 = NEW_parser_prod___ACallReassignExpr___init_acallreassignexpr( variable10 /*pexprnode2*/,  variable11 /*tidnode3*/,  variable9 /*listnode5*/,  variable13 /*passignopnode6*/,  variable14 /*pexprnode7*/); /*new ACallReassignExpr*/
   variable15 = variable16;
   variable1 =  variable15 /*pexprnode1*/ /*node_list=*/;
@@ -20557,7 +20570,7 @@ void parser___ReduceAction263___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction263___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction263___init, 10882};
+  struct trace_t trace = {NULL, LOCATE_parser, 10887, LOCATE_parser___ReduceAction263___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction263].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction263].i] = 1;
@@ -20565,7 +20578,7 @@ void parser___ReduceAction263___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction264___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction264___action, 10886};
+  struct trace_t trace = {NULL, LOCATE_parser, 10891, LOCATE_parser___ReduceAction264___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -20591,31 +20604,31 @@ void parser___ReduceAction264___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable8 = NEW_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable7 = variable8;
   variable8 =  variable5 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable8 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction264___action, 10897); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction264___action, LOCATE_parser, 10902); nit_exit(1);}
   variable9 =  variable4 /*nodearraylist2*/;
   variable10 = TAG_Bool(( variable9 /*listnode4*/==NIT_NULL) || VAL_ISA( variable9 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction264___action, 10899); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction264___action, LOCATE_parser, 10904); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode5*/) /*Array::is_empty*/;
+    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable10)) { /*if*/
       variable6 =  variable9 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode5*/,  variable9 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode5*/,  variable9 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable10 =  variable3 /*nodearraylist3*/;
   variable11 = TAG_Bool(( variable10 /*passignopnode6*/==NIT_NULL) || VAL_ISA( variable10 /*passignopnode6*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction264___action, 10908); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction264___action, LOCATE_parser, 10913); nit_exit(1);}
   variable11 =  variable2 /*nodearraylist4*/;
   variable12 = TAG_Bool(( variable11 /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable11 /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction264___action, 10910); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction264___action, LOCATE_parser, 10915); nit_exit(1);}
   variable13 = NEW_parser_prod___ACallReassignExpr___init_acallreassignexpr( variable7 /*pexprnode2*/,  variable8 /*tidnode3*/,  variable6 /*listnode5*/,  variable10 /*passignopnode6*/,  variable11 /*pexprnode7*/); /*new ACallReassignExpr*/
   variable12 = variable13;
   variable1 =  variable12 /*pexprnode1*/ /*node_list=*/;
@@ -20625,7 +20638,7 @@ void parser___ReduceAction264___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction264___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction264___init, 10921};
+  struct trace_t trace = {NULL, LOCATE_parser, 10926, LOCATE_parser___ReduceAction264___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction264].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction264].i] = 1;
@@ -20633,7 +20646,7 @@ void parser___ReduceAction264___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction265___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction265___action, 10925};
+  struct trace_t trace = {NULL, LOCATE_parser, 10930, LOCATE_parser___ReduceAction265___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -20658,29 +20671,29 @@ void parser___ReduceAction265___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable5 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction265___action, 10934); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction265___action, LOCATE_parser, 10939); nit_exit(1);}
   variable8 =  variable4 /*nodearraylist2*/;
   variable9 = TAG_Bool(( variable8 /*listnode3*/==NIT_NULL) || VAL_ISA( variable8 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction265___action, 10936); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction265___action, LOCATE_parser, 10941); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode4*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable6 =  variable8 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode4*/,  variable8 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode4*/,  variable8 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable9 =  variable3 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*passignopnode5*/==NIT_NULL) || VAL_ISA( variable9 /*passignopnode5*/, COLOR_PAssignOp, ID_PAssignOp)) /*cast PAssignOp*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction265___action, 10945); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction265___action, LOCATE_parser, 10950); nit_exit(1);}
   variable10 =  variable2 /*nodearraylist4*/;
   variable11 = TAG_Bool(( variable10 /*pexprnode6*/==NIT_NULL) || VAL_ISA( variable10 /*pexprnode6*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction265___action, 10947); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction265___action, LOCATE_parser, 10952); nit_exit(1);}
   variable12 = NEW_parser_prod___ABraReassignExpr___init_abrareassignexpr( variable7 /*pexprnode2*/,  variable6 /*listnode4*/,  variable9 /*passignopnode5*/,  variable10 /*pexprnode6*/); /*new ABraReassignExpr*/
   variable11 = variable12;
   variable1 =  variable11 /*pexprnode1*/ /*node_list=*/;
@@ -20690,7 +20703,7 @@ void parser___ReduceAction265___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction265___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction265___init, 10957};
+  struct trace_t trace = {NULL, LOCATE_parser, 10962, LOCATE_parser___ReduceAction265___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction265].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction265].i] = 1;
@@ -20698,7 +20711,7 @@ void parser___ReduceAction265___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction266___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction266___action, 10961};
+  struct trace_t trace = {NULL, LOCATE_parser, 10966, LOCATE_parser___ReduceAction266___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -20712,7 +20725,7 @@ void parser___ReduceAction266___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tpluseqnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tpluseqnode2*/, COLOR_TPluseq, ID_TPluseq)) /*cast TPluseq*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction266___action, 10966); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction266___action, LOCATE_parser, 10971); nit_exit(1);}
   variable5 = NEW_parser_prod___APlusAssignOp___init_aplusassignop( variable3 /*tpluseqnode2*/); /*new APlusAssignOp*/
   variable4 = variable5;
   variable1 =  variable4 /*passignopnode1*/ /*node_list=*/;
@@ -20722,7 +20735,7 @@ void parser___ReduceAction266___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction266___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction266___init, 10973};
+  struct trace_t trace = {NULL, LOCATE_parser, 10978, LOCATE_parser___ReduceAction266___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction266].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction266].i] = 1;
@@ -20730,7 +20743,7 @@ void parser___ReduceAction266___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction267___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction267___action, 10977};
+  struct trace_t trace = {NULL, LOCATE_parser, 10982, LOCATE_parser___ReduceAction267___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -20744,7 +20757,7 @@ void parser___ReduceAction267___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tminuseqnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tminuseqnode2*/, COLOR_TMinuseq, ID_TMinuseq)) /*cast TMinuseq*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction267___action, 10982); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction267___action, LOCATE_parser, 10987); nit_exit(1);}
   variable5 = NEW_parser_prod___AMinusAssignOp___init_aminusassignop( variable3 /*tminuseqnode2*/); /*new AMinusAssignOp*/
   variable4 = variable5;
   variable1 =  variable4 /*passignopnode1*/ /*node_list=*/;
@@ -20754,7 +20767,7 @@ void parser___ReduceAction267___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction267___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction267___init, 10989};
+  struct trace_t trace = {NULL, LOCATE_parser, 10994, LOCATE_parser___ReduceAction267___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction267].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction267].i] = 1;
@@ -20762,7 +20775,7 @@ void parser___ReduceAction267___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction268___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction268___action, 10993};
+  struct trace_t trace = {NULL, LOCATE_parser, 10998, LOCATE_parser___ReduceAction268___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -20780,10 +20793,10 @@ void parser___ReduceAction268___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tkwdonode2*/==NIT_NULL) || VAL_ISA( variable4 /*tkwdonode2*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction268___action, 10999); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction268___action, LOCATE_parser, 11004); nit_exit(1);}
   variable5 =  variable2 /*nodearraylist2*/;
   variable6 = TAG_Bool(( variable5 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable5 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction268___action, 11001); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction268___action, LOCATE_parser, 11006); nit_exit(1);}
   variable7 = NEW_parser_prod___ADoExpr___init_adoexpr( variable4 /*tkwdonode2*/,  variable5 /*pexprnode3*/); /*new ADoExpr*/
   variable6 = variable7;
   variable1 =  variable6 /*pexprnode1*/ /*node_list=*/;
@@ -20793,7 +20806,7 @@ void parser___ReduceAction268___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction268___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction268___init, 11009};
+  struct trace_t trace = {NULL, LOCATE_parser, 11014, LOCATE_parser___ReduceAction268___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction268].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction268].i] = 1;
@@ -20801,7 +20814,7 @@ void parser___ReduceAction268___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction269___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction269___action, 11013};
+  struct trace_t trace = {NULL, LOCATE_parser, 11018, LOCATE_parser___ReduceAction269___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -20839,16 +20852,16 @@ void parser___ReduceAction269___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable10 /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction269___action, 11025); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction269___action, LOCATE_parser, 11030); nit_exit(1);}
   variable11 =  variable7 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable11 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction269___action, 11027); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction269___action, LOCATE_parser, 11032); nit_exit(1);}
   variable12 =  variable4 /*nodearraylist6*/;
   variable13 = TAG_Bool(( variable12 /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable12 /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction269___action, 11029); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction269___action, LOCATE_parser, 11034); nit_exit(1);}
   variable13 =  variable2 /*nodearraylist8*/;
   variable14 = TAG_Bool(( variable13 /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable13 /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction269___action, 11031); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction269___action, LOCATE_parser, 11036); nit_exit(1);}
   variable15 = NEW_parser_prod___AIfExpr___init_aifexpr( variable10 /*tkwifnode2*/,  variable11 /*pexprnode3*/,  variable12 /*pexprnode4*/,  variable13 /*pexprnode5*/); /*new AIfExpr*/
   variable14 = variable15;
   variable1 =  variable14 /*pexprnode1*/ /*node_list=*/;
@@ -20858,7 +20871,7 @@ void parser___ReduceAction269___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction269___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction269___init, 11041};
+  struct trace_t trace = {NULL, LOCATE_parser, 11046, LOCATE_parser___ReduceAction269___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction269].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction269].i] = 1;
@@ -20866,7 +20879,7 @@ void parser___ReduceAction269___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction270___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction270___action, 11045};
+  struct trace_t trace = {NULL, LOCATE_parser, 11050, LOCATE_parser___ReduceAction270___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -20897,13 +20910,13 @@ void parser___ReduceAction270___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable7 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable8 /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction270___action, 11055); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction270___action, LOCATE_parser, 11060); nit_exit(1);}
   variable9 =  variable5 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable9 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction270___action, 11057); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction270___action, LOCATE_parser, 11062); nit_exit(1);}
   variable10 =  variable2 /*nodearraylist6*/;
   variable11 = TAG_Bool(( variable10 /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable10 /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction270___action, 11059); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction270___action, LOCATE_parser, 11064); nit_exit(1);}
   variable12 = NEW_parser_prod___AIfExpr___init_aifexpr( variable8 /*tkwifnode2*/,  variable9 /*pexprnode3*/,  variable10 /*pexprnode4*/,  NIT_NULL /*null*/); /*new AIfExpr*/
   variable11 = variable12;
   variable1 =  variable11 /*pexprnode1*/ /*node_list=*/;
@@ -20913,7 +20926,7 @@ void parser___ReduceAction270___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction270___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction270___init, 11069};
+  struct trace_t trace = {NULL, LOCATE_parser, 11074, LOCATE_parser___ReduceAction270___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction270].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction270].i] = 1;
@@ -20921,7 +20934,7 @@ void parser___ReduceAction270___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction271___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction271___action, 11073};
+  struct trace_t trace = {NULL, LOCATE_parser, 11078, LOCATE_parser___ReduceAction271___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -20964,24 +20977,24 @@ void parser___ReduceAction271___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable10 /*nodearraylist1*/;
   variable12 = TAG_Bool(( variable11 /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable11 /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction271___action, 11086); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction271___action, LOCATE_parser, 11091); nit_exit(1);}
   variable12 =  variable8 /*nodearraylist3*/;
   variable13 = TAG_Bool(( variable12 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable12 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction271___action, 11088); nit_exit(1);}
-  variable14 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction271___action, LOCATE_parser, 11093); nit_exit(1);}
+  variable14 = NEW_array___Array___init(); /*new Array[E]*/
   variable13 = variable14;
   variable14 =  variable4 /*nodearraylist7*/;
   variable15 = TAG_Bool(( variable14 /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable14 /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction271___action, 11091); nit_exit(1);}
-  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pexprnode5*/ ==  NIT_NULL /*null*/) || (( variable14 /*pexprnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pexprnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pexprnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pexprnode5*/,COLOR_kernel___Object_____eqeq))( variable14 /*pexprnode5*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction271___action, LOCATE_parser, 11096); nit_exit(1);}
+  variable15 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable14 /*pexprnode5*/ ==  NIT_NULL /*null*/) || (( variable14 /*pexprnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable14 /*pexprnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable14 /*pexprnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable14 /*pexprnode5*/,COLOR_kernel___Object_____eqeq))( variable14 /*pexprnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable15)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable13 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable13 /*listnode6*/,  variable14 /*pexprnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable13 /*listnode6*/,COLOR_abstract_collection___SimpleCollection___add))( variable13 /*listnode6*/,  variable14 /*pexprnode5*/) /*AbstractArray::add*/;
   }
   variable16 = NEW_parser_prod___ABlockExpr___init_ablockexpr( variable13 /*listnode6*/); /*new ABlockExpr*/
   variable15 = variable16;
   variable16 =  variable2 /*nodearraylist9*/;
   variable17 = TAG_Bool(( variable16 /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable16 /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction271___action, 11099); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction271___action, LOCATE_parser, 11104); nit_exit(1);}
   variable18 = NEW_parser_prod___AIfExpr___init_aifexpr( variable11 /*tkwifnode2*/,  variable12 /*pexprnode3*/,  variable15 /*pexprnode4*/,  variable16 /*pexprnode7*/); /*new AIfExpr*/
   variable17 = variable18;
   variable1 =  variable17 /*pexprnode1*/ /*node_list=*/;
@@ -20991,7 +21004,7 @@ void parser___ReduceAction271___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction271___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction271___init, 11109};
+  struct trace_t trace = {NULL, LOCATE_parser, 11114, LOCATE_parser___ReduceAction271___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction271].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction271].i] = 1;
@@ -20999,7 +21012,7 @@ void parser___ReduceAction271___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction272___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction272___action, 11113};
+  struct trace_t trace = {NULL, LOCATE_parser, 11118, LOCATE_parser___ReduceAction272___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21046,36 +21059,36 @@ void parser___ReduceAction272___action(val_t  self, val_t  param0) {
   variable11 = variable12;
   variable12 =  variable11 /*nodearraylist1*/;
   variable13 = TAG_Bool(( variable12 /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable12 /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction272___action, 11127); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction272___action, LOCATE_parser, 11132); nit_exit(1);}
   variable13 =  variable9 /*nodearraylist3*/;
   variable14 = TAG_Bool(( variable13 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable13 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction272___action, 11129); nit_exit(1);}
-  variable15 = NEW_array___Array___init(); /*new Array[Object]*/
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction272___action, LOCATE_parser, 11134); nit_exit(1);}
+  variable15 = NEW_array___Array___init(); /*new Array[E]*/
   variable14 = variable15;
   variable15 =  variable5 /*nodearraylist7*/;
   variable16 = TAG_Bool(( variable15 /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable15 /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction272___action, 11132); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction272___action, LOCATE_parser, 11137); nit_exit(1);}
   variable16 =  variable4 /*nodearraylist8*/;
   variable17 = TAG_Bool(( variable16 /*listnode6*/==NIT_NULL) || VAL_ISA( variable16 /*listnode6*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction272___action, 11134); nit_exit(1);}
-  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable15 /*pexprnode5*/ ==  NIT_NULL /*null*/) || (( variable15 /*pexprnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable15 /*pexprnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable15 /*pexprnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable15 /*pexprnode5*/,COLOR_kernel___Object_____eqeq))( variable15 /*pexprnode5*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction272___action, LOCATE_parser, 11139); nit_exit(1);}
+  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable15 /*pexprnode5*/ ==  NIT_NULL /*null*/) || (( variable15 /*pexprnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable15 /*pexprnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable15 /*pexprnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable15 /*pexprnode5*/,COLOR_kernel___Object_____eqeq))( variable15 /*pexprnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable17)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable14 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable14 /*listnode7*/,  variable15 /*pexprnode5*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable14 /*listnode7*/,COLOR_abstract_collection___SimpleCollection___add))( variable14 /*listnode7*/,  variable15 /*pexprnode5*/) /*AbstractArray::add*/;
   }
-  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable16 /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable16 /*listnode6*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable16 /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable16 /*listnode6*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable17 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable16 /*listnode6*/ ==  NIT_NULL /*null*/) || (( variable16 /*listnode6*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable16 /*listnode6*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable16 /*listnode6*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable16 /*listnode6*/,COLOR_kernel___Object_____eqeq))( variable16 /*listnode6*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable17)) { /*if*/
-    variable17 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode7*/) /*Array::is_empty*/;
+    variable17 = ((array___AbstractArray___is_empty_t)CALL( variable14 /*listnode7*/,COLOR_abstract_collection___Collection___is_empty))( variable14 /*listnode7*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable17)) { /*if*/
       variable14 =  variable16 /*listnode6*/ /*listnode7=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode7*/,  variable16 /*listnode6*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable14 /*listnode7*/,COLOR_abstract_collection___IndexedCollection___append))( variable14 /*listnode7*/,  variable16 /*listnode6*/) /*IndexedCollection::append*/;
     }
   }
   variable18 = NEW_parser_prod___ABlockExpr___init_ablockexpr( variable14 /*listnode7*/); /*new ABlockExpr*/
   variable17 = variable18;
   variable18 =  variable2 /*nodearraylist10*/;
   variable19 = TAG_Bool(( variable18 /*pexprnode8*/==NIT_NULL) || VAL_ISA( variable18 /*pexprnode8*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction272___action, 11149); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction272___action, LOCATE_parser, 11154); nit_exit(1);}
   variable20 = NEW_parser_prod___AIfExpr___init_aifexpr( variable12 /*tkwifnode2*/,  variable13 /*pexprnode3*/,  variable17 /*pexprnode4*/,  variable18 /*pexprnode8*/); /*new AIfExpr*/
   variable19 = variable20;
   variable1 =  variable19 /*pexprnode1*/ /*node_list=*/;
@@ -21085,7 +21098,7 @@ void parser___ReduceAction272___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction272___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction272___init, 11159};
+  struct trace_t trace = {NULL, LOCATE_parser, 11164, LOCATE_parser___ReduceAction272___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction272].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction272].i] = 1;
@@ -21093,7 +21106,7 @@ void parser___ReduceAction272___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction273___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction273___action, 11163};
+  struct trace_t trace = {NULL, LOCATE_parser, 11168, LOCATE_parser___ReduceAction273___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21124,13 +21137,13 @@ void parser___ReduceAction273___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable7 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable8 /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction273___action, 11173); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction273___action, LOCATE_parser, 11178); nit_exit(1);}
   variable9 =  variable5 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable9 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction273___action, 11175); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction273___action, LOCATE_parser, 11180); nit_exit(1);}
   variable10 =  variable2 /*nodearraylist6*/;
   variable11 = TAG_Bool(( variable10 /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable10 /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction273___action, 11177); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction273___action, LOCATE_parser, 11182); nit_exit(1);}
   variable12 = NEW_parser_prod___AIfExpr___init_aifexpr( variable8 /*tkwifnode2*/,  variable9 /*pexprnode3*/,  NIT_NULL /*null*/,  variable10 /*pexprnode5*/); /*new AIfExpr*/
   variable11 = variable12;
   variable1 =  variable11 /*pexprnode1*/ /*node_list=*/;
@@ -21140,7 +21153,7 @@ void parser___ReduceAction273___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction273___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction273___init, 11187};
+  struct trace_t trace = {NULL, LOCATE_parser, 11192, LOCATE_parser___ReduceAction273___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction273].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction273].i] = 1;
@@ -21148,7 +21161,7 @@ void parser___ReduceAction273___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction274___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction274___action, 11191};
+  struct trace_t trace = {NULL, LOCATE_parser, 11196, LOCATE_parser___ReduceAction274___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21182,13 +21195,13 @@ void parser___ReduceAction274___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable9 /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction274___action, 11202); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction274___action, LOCATE_parser, 11207); nit_exit(1);}
   variable10 =  variable6 /*nodearraylist3*/;
   variable11 = TAG_Bool(( variable10 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable10 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction274___action, 11204); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction274___action, LOCATE_parser, 11209); nit_exit(1);}
   variable11 =  variable2 /*nodearraylist7*/;
   variable12 = TAG_Bool(( variable11 /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable11 /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction274___action, 11206); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction274___action, LOCATE_parser, 11211); nit_exit(1);}
   variable13 = NEW_parser_prod___AIfExpr___init_aifexpr( variable9 /*tkwifnode2*/,  variable10 /*pexprnode3*/,  NIT_NULL /*null*/,  variable11 /*pexprnode5*/); /*new AIfExpr*/
   variable12 = variable13;
   variable1 =  variable12 /*pexprnode1*/ /*node_list=*/;
@@ -21198,7 +21211,7 @@ void parser___ReduceAction274___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction274___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction274___init, 11216};
+  struct trace_t trace = {NULL, LOCATE_parser, 11221, LOCATE_parser___ReduceAction274___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction274].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction274].i] = 1;
@@ -21206,7 +21219,7 @@ void parser___ReduceAction274___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction275___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction275___action, 11220};
+  struct trace_t trace = {NULL, LOCATE_parser, 11225, LOCATE_parser___ReduceAction275___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21222,7 +21235,7 @@ void parser___ReduceAction275___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist2*/;
   variable5 = TAG_Bool(( variable4 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable4 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction275___action, 11226); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction275___action, LOCATE_parser, 11231); nit_exit(1);}
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(33)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable5,  variable1 /*node_list*/) /*Parser::push*/;
@@ -21230,7 +21243,7 @@ void parser___ReduceAction275___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction275___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction275___init, 11230};
+  struct trace_t trace = {NULL, LOCATE_parser, 11235, LOCATE_parser___ReduceAction275___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction275].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction275].i] = 1;
@@ -21238,7 +21251,7 @@ void parser___ReduceAction275___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction276___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction276___action, 11234};
+  struct trace_t trace = {NULL, LOCATE_parser, 11239, LOCATE_parser___ReduceAction276___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21255,7 +21268,7 @@ void parser___ReduceAction276___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction276___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction276___init, 11241};
+  struct trace_t trace = {NULL, LOCATE_parser, 11246, LOCATE_parser___ReduceAction276___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction276].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction276].i] = 1;
@@ -21263,7 +21276,7 @@ void parser___ReduceAction276___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction277___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction277___action, 11245};
+  struct trace_t trace = {NULL, LOCATE_parser, 11250, LOCATE_parser___ReduceAction277___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21295,16 +21308,16 @@ void parser___ReduceAction277___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable7 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*tkwwhilenode2*/==NIT_NULL) || VAL_ISA( variable8 /*tkwwhilenode2*/, COLOR_TKwwhile, ID_TKwwhile)) /*cast TKwwhile*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction277___action, 11255); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction277___action, LOCATE_parser, 11260); nit_exit(1);}
   variable9 =  variable5 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable9 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction277___action, 11257); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction277___action, LOCATE_parser, 11262); nit_exit(1);}
   variable10 =  variable3 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*tkwdonode4*/==NIT_NULL) || VAL_ISA( variable10 /*tkwdonode4*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction277___action, 11259); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction277___action, LOCATE_parser, 11264); nit_exit(1);}
   variable11 =  variable2 /*nodearraylist6*/;
   variable12 = TAG_Bool(( variable11 /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable11 /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction277___action, 11261); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction277___action, LOCATE_parser, 11266); nit_exit(1);}
   variable13 = NEW_parser_prod___AWhileExpr___init_awhileexpr( variable8 /*tkwwhilenode2*/,  variable9 /*pexprnode3*/,  variable10 /*tkwdonode4*/,  variable11 /*pexprnode5*/); /*new AWhileExpr*/
   variable12 = variable13;
   variable1 =  variable12 /*pexprnode1*/ /*node_list=*/;
@@ -21314,7 +21327,7 @@ void parser___ReduceAction277___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction277___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction277___init, 11271};
+  struct trace_t trace = {NULL, LOCATE_parser, 11276, LOCATE_parser___ReduceAction277___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction277].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction277].i] = 1;
@@ -21322,7 +21335,7 @@ void parser___ReduceAction277___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction278___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction278___action, 11275};
+  struct trace_t trace = {NULL, LOCATE_parser, 11280, LOCATE_parser___ReduceAction278___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21347,13 +21360,13 @@ void parser___ReduceAction278___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction278___action, 11283); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction278___action, LOCATE_parser, 11288); nit_exit(1);}
   variable7 =  variable3 /*nodearraylist3*/;
   variable8 = TAG_Bool(( variable7 /*tkwdonode3*/==NIT_NULL) || VAL_ISA( variable7 /*tkwdonode3*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction278___action, 11285); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction278___action, LOCATE_parser, 11290); nit_exit(1);}
   variable8 =  variable2 /*nodearraylist4*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction278___action, 11287); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction278___action, LOCATE_parser, 11292); nit_exit(1);}
   variable10 = NEW_parser_prod___AForExpr___init_aforexpr( variable6 /*pexprnode2*/,  variable7 /*tkwdonode3*/,  variable8 /*pexprnode4*/); /*new AForExpr*/
   variable9 = variable10;
   variable1 =  variable9 /*pexprnode1*/ /*node_list=*/;
@@ -21363,7 +21376,7 @@ void parser___ReduceAction278___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction278___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction278___init, 11296};
+  struct trace_t trace = {NULL, LOCATE_parser, 11301, LOCATE_parser___ReduceAction278___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction278].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction278].i] = 1;
@@ -21371,7 +21384,7 @@ void parser___ReduceAction278___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction279___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction279___action, 11300};
+  struct trace_t trace = {NULL, LOCATE_parser, 11305, LOCATE_parser___ReduceAction279___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21405,13 +21418,13 @@ void parser___ReduceAction279___action(val_t  self, val_t  param0) {
   variable8 = variable9;
   variable9 =  variable8 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*tkwfornode2*/==NIT_NULL) || VAL_ISA( variable9 /*tkwfornode2*/, COLOR_TKwfor, ID_TKwfor)) /*cast TKwfor*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction279___action, 11311); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction279___action, LOCATE_parser, 11316); nit_exit(1);}
   variable10 =  variable6 /*nodearraylist3*/;
   variable11 = TAG_Bool(( variable10 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable10 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction279___action, 11313); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction279___action, LOCATE_parser, 11318); nit_exit(1);}
   variable11 =  variable2 /*nodearraylist7*/;
   variable12 = TAG_Bool(( variable11 /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable11 /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction279___action, 11315); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction279___action, LOCATE_parser, 11320); nit_exit(1);}
   variable13 = NEW_parser_prod___AForVardeclExpr___init_aforvardeclexpr( variable9 /*tkwfornode2*/,  variable10 /*tidnode3*/,  variable11 /*pexprnode4*/); /*new AForVardeclExpr*/
   variable12 = variable13;
   variable1 =  variable12 /*pexprnode1*/ /*node_list=*/;
@@ -21421,7 +21434,7 @@ void parser___ReduceAction279___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction279___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction279___init, 11324};
+  struct trace_t trace = {NULL, LOCATE_parser, 11329, LOCATE_parser___ReduceAction279___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction279].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction279].i] = 1;
@@ -21429,7 +21442,7 @@ void parser___ReduceAction279___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction280___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction280___action, 11328};
+  struct trace_t trace = {NULL, LOCATE_parser, 11333, LOCATE_parser___ReduceAction280___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21447,10 +21460,10 @@ void parser___ReduceAction280___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tkwassertnode2*/==NIT_NULL) || VAL_ISA( variable4 /*tkwassertnode2*/, COLOR_TKwassert, ID_TKwassert)) /*cast TKwassert*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction280___action, 11334); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction280___action, LOCATE_parser, 11339); nit_exit(1);}
   variable5 =  variable2 /*nodearraylist2*/;
   variable6 = TAG_Bool(( variable5 /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable5 /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction280___action, 11336); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction280___action, LOCATE_parser, 11341); nit_exit(1);}
   variable7 = NEW_parser_prod___AAssertExpr___init_aassertexpr( variable4 /*tkwassertnode2*/,  NIT_NULL /*null*/,  variable5 /*pexprnode4*/); /*new AAssertExpr*/
   variable6 = variable7;
   variable1 =  variable6 /*pexprnode1*/ /*node_list=*/;
@@ -21460,7 +21473,7 @@ void parser___ReduceAction280___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction280___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction280___init, 11345};
+  struct trace_t trace = {NULL, LOCATE_parser, 11350, LOCATE_parser___ReduceAction280___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction280].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction280].i] = 1;
@@ -21468,7 +21481,7 @@ void parser___ReduceAction280___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction281___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction281___action, 11349};
+  struct trace_t trace = {NULL, LOCATE_parser, 11354, LOCATE_parser___ReduceAction281___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21490,13 +21503,13 @@ void parser___ReduceAction281___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tkwassertnode2*/==NIT_NULL) || VAL_ISA( variable5 /*tkwassertnode2*/, COLOR_TKwassert, ID_TKwassert)) /*cast TKwassert*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction281___action, 11356); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction281___action, LOCATE_parser, 11361); nit_exit(1);}
   variable6 =  variable3 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable6 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction281___action, 11358); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction281___action, LOCATE_parser, 11363); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist3*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction281___action, 11360); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction281___action, LOCATE_parser, 11365); nit_exit(1);}
   variable9 = NEW_parser_prod___AAssertExpr___init_aassertexpr( variable5 /*tkwassertnode2*/,  variable6 /*tidnode3*/,  variable7 /*pexprnode4*/); /*new AAssertExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -21506,7 +21519,7 @@ void parser___ReduceAction281___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction281___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction281___init, 11369};
+  struct trace_t trace = {NULL, LOCATE_parser, 11374, LOCATE_parser___ReduceAction281___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction281].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction281].i] = 1;
@@ -21514,7 +21527,7 @@ void parser___ReduceAction281___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction282___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction282___action, 11373};
+  struct trace_t trace = {NULL, LOCATE_parser, 11378, LOCATE_parser___ReduceAction282___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21530,7 +21543,7 @@ void parser___ReduceAction282___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tidnode1*/==NIT_NULL) || VAL_ISA( variable4 /*tidnode1*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction282___action, 11379); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction282___action, LOCATE_parser, 11384); nit_exit(1);}
   variable1 =  variable4 /*tidnode1*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(38)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable5,  variable1 /*node_list*/) /*Parser::push*/;
@@ -21538,7 +21551,7 @@ void parser___ReduceAction282___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction282___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction282___init, 11383};
+  struct trace_t trace = {NULL, LOCATE_parser, 11388, LOCATE_parser___ReduceAction282___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction282].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction282].i] = 1;
@@ -21546,7 +21559,7 @@ void parser___ReduceAction282___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction283___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction283___action, 11387};
+  struct trace_t trace = {NULL, LOCATE_parser, 11392, LOCATE_parser___ReduceAction283___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21559,7 +21572,7 @@ void parser___ReduceAction283___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction283___action, 11392); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction283___action, LOCATE_parser, 11397); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(39)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
@@ -21567,7 +21580,7 @@ void parser___ReduceAction283___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction283___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction283___init, 11396};
+  struct trace_t trace = {NULL, LOCATE_parser, 11401, LOCATE_parser___ReduceAction283___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction283].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction283].i] = 1;
@@ -21575,7 +21588,7 @@ void parser___ReduceAction283___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction284___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction284___action, 11400};
+  struct trace_t trace = {NULL, LOCATE_parser, 11405, LOCATE_parser___ReduceAction284___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21624,22 +21637,22 @@ void parser___ReduceAction284___action(val_t  self, val_t  param0) {
   variable12 = variable13;
   variable13 =  variable12 /*nodearraylist1*/;
   variable14 = TAG_Bool(( variable13 /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable13 /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction284___action, 11415); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction284___action, LOCATE_parser, 11420); nit_exit(1);}
   variable14 =  variable10 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable14 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction284___action, 11417); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction284___action, LOCATE_parser, 11422); nit_exit(1);}
   variable15 =  variable8 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*tkwthennode4*/==NIT_NULL) || VAL_ISA( variable15 /*tkwthennode4*/, COLOR_TKwthen, ID_TKwthen)) /*cast TKwthen*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction284___action, 11419); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction284___action, LOCATE_parser, 11424); nit_exit(1);}
   variable16 =  variable6 /*nodearraylist7*/;
   variable17 = TAG_Bool(( variable16 /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable16 /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction284___action, 11421); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction284___action, LOCATE_parser, 11426); nit_exit(1);}
   variable17 =  variable4 /*nodearraylist9*/;
   variable18 = TAG_Bool(( variable17 /*tkwelsenode6*/==NIT_NULL) || VAL_ISA( variable17 /*tkwelsenode6*/, COLOR_TKwelse, ID_TKwelse)) /*cast TKwelse*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction284___action, 11423); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction284___action, LOCATE_parser, 11428); nit_exit(1);}
   variable18 =  variable2 /*nodearraylist11*/;
   variable19 = TAG_Bool(( variable18 /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable18 /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction284___action, 11425); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction284___action, LOCATE_parser, 11430); nit_exit(1);}
   variable20 = NEW_parser_prod___AIfexprExpr___init_aifexprexpr( variable13 /*tkwifnode2*/,  variable14 /*pexprnode3*/,  variable15 /*tkwthennode4*/,  variable16 /*pexprnode5*/,  variable17 /*tkwelsenode6*/,  variable18 /*pexprnode7*/); /*new AIfexprExpr*/
   variable19 = variable20;
   variable1 =  variable19 /*pexprnode1*/ /*node_list=*/;
@@ -21649,7 +21662,7 @@ void parser___ReduceAction284___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction284___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction284___init, 11437};
+  struct trace_t trace = {NULL, LOCATE_parser, 11442, LOCATE_parser___ReduceAction284___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction284].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction284].i] = 1;
@@ -21657,7 +21670,7 @@ void parser___ReduceAction284___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction285___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction285___action, 11441};
+  struct trace_t trace = {NULL, LOCATE_parser, 11446, LOCATE_parser___ReduceAction285___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21670,7 +21683,7 @@ void parser___ReduceAction285___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction285___action, 11446); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction285___action, LOCATE_parser, 11451); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(40)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
@@ -21678,7 +21691,7 @@ void parser___ReduceAction285___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction285___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction285___init, 11450};
+  struct trace_t trace = {NULL, LOCATE_parser, 11455, LOCATE_parser___ReduceAction285___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction285].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction285].i] = 1;
@@ -21686,7 +21699,7 @@ void parser___ReduceAction285___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction286___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction286___action, 11454};
+  struct trace_t trace = {NULL, LOCATE_parser, 11459, LOCATE_parser___ReduceAction286___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21710,10 +21723,10 @@ void parser___ReduceAction286___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction286___action, 11462); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction286___action, LOCATE_parser, 11467); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction286___action, 11464); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction286___action, LOCATE_parser, 11469); nit_exit(1);}
   variable9 = NEW_parser_prod___AOrExpr___init_aorexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AOrExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -21723,7 +21736,7 @@ void parser___ReduceAction286___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction286___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction286___init, 11472};
+  struct trace_t trace = {NULL, LOCATE_parser, 11477, LOCATE_parser___ReduceAction286___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction286].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction286].i] = 1;
@@ -21731,7 +21744,7 @@ void parser___ReduceAction286___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction287___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction287___action, 11476};
+  struct trace_t trace = {NULL, LOCATE_parser, 11481, LOCATE_parser___ReduceAction287___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21755,10 +21768,10 @@ void parser___ReduceAction287___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction287___action, 11484); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction287___action, LOCATE_parser, 11489); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction287___action, 11486); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction287___action, LOCATE_parser, 11491); nit_exit(1);}
   variable9 = NEW_parser_prod___AAndExpr___init_aandexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AAndExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -21768,7 +21781,7 @@ void parser___ReduceAction287___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction287___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction287___init, 11494};
+  struct trace_t trace = {NULL, LOCATE_parser, 11499, LOCATE_parser___ReduceAction287___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction287].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction287].i] = 1;
@@ -21776,7 +21789,7 @@ void parser___ReduceAction287___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction288___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction288___action, 11498};
+  struct trace_t trace = {NULL, LOCATE_parser, 11503, LOCATE_parser___ReduceAction288___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21789,7 +21802,7 @@ void parser___ReduceAction288___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction288___action, 11503); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction288___action, LOCATE_parser, 11508); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(41)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
@@ -21797,7 +21810,7 @@ void parser___ReduceAction288___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction288___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction288___init, 11507};
+  struct trace_t trace = {NULL, LOCATE_parser, 11512, LOCATE_parser___ReduceAction288___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction288].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction288].i] = 1;
@@ -21805,7 +21818,7 @@ void parser___ReduceAction288___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction289___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction289___action, 11511};
+  struct trace_t trace = {NULL, LOCATE_parser, 11516, LOCATE_parser___ReduceAction289___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21826,10 +21839,10 @@ void parser___ReduceAction289___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tkwnotnode2*/==NIT_NULL) || VAL_ISA( variable5 /*tkwnotnode2*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction289___action, 11518); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction289___action, LOCATE_parser, 11523); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist3*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction289___action, 11520); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction289___action, LOCATE_parser, 11525); nit_exit(1);}
   variable8 = NEW_parser_prod___ANotExpr___init_anotexpr( variable5 /*tkwnotnode2*/,  variable6 /*pexprnode3*/); /*new ANotExpr*/
   variable7 = variable8;
   variable1 =  variable7 /*pexprnode1*/ /*node_list=*/;
@@ -21839,7 +21852,7 @@ void parser___ReduceAction289___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction289___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction289___init, 11528};
+  struct trace_t trace = {NULL, LOCATE_parser, 11533, LOCATE_parser___ReduceAction289___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction289].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction289].i] = 1;
@@ -21847,7 +21860,7 @@ void parser___ReduceAction289___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction290___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction290___action, 11532};
+  struct trace_t trace = {NULL, LOCATE_parser, 11537, LOCATE_parser___ReduceAction290___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21860,7 +21873,7 @@ void parser___ReduceAction290___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction290___action, 11537); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction290___action, LOCATE_parser, 11542); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(42)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
@@ -21868,7 +21881,7 @@ void parser___ReduceAction290___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction290___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction290___init, 11541};
+  struct trace_t trace = {NULL, LOCATE_parser, 11546, LOCATE_parser___ReduceAction290___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction290].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction290].i] = 1;
@@ -21876,7 +21889,7 @@ void parser___ReduceAction290___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction291___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction291___action, 11545};
+  struct trace_t trace = {NULL, LOCATE_parser, 11550, LOCATE_parser___ReduceAction291___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21900,10 +21913,10 @@ void parser___ReduceAction291___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction291___action, 11553); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction291___action, LOCATE_parser, 11558); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction291___action, 11555); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction291___action, LOCATE_parser, 11560); nit_exit(1);}
   variable9 = NEW_parser_prod___AEqExpr___init_aeqexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AEqExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -21913,7 +21926,7 @@ void parser___ReduceAction291___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction291___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction291___init, 11563};
+  struct trace_t trace = {NULL, LOCATE_parser, 11568, LOCATE_parser___ReduceAction291___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction291].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction291].i] = 1;
@@ -21921,7 +21934,7 @@ void parser___ReduceAction291___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction292___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction292___action, 11567};
+  struct trace_t trace = {NULL, LOCATE_parser, 11572, LOCATE_parser___ReduceAction292___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21945,10 +21958,10 @@ void parser___ReduceAction292___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction292___action, 11575); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction292___action, LOCATE_parser, 11580); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction292___action, 11577); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction292___action, LOCATE_parser, 11582); nit_exit(1);}
   variable9 = NEW_parser_prod___AEeExpr___init_aeeexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AEeExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -21958,7 +21971,7 @@ void parser___ReduceAction292___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction292___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction292___init, 11585};
+  struct trace_t trace = {NULL, LOCATE_parser, 11590, LOCATE_parser___ReduceAction292___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction292].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction292].i] = 1;
@@ -21966,7 +21979,7 @@ void parser___ReduceAction292___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction293___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction293___action, 11589};
+  struct trace_t trace = {NULL, LOCATE_parser, 11594, LOCATE_parser___ReduceAction293___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -21990,10 +22003,10 @@ void parser___ReduceAction293___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction293___action, 11597); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction293___action, LOCATE_parser, 11602); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction293___action, 11599); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction293___action, LOCATE_parser, 11604); nit_exit(1);}
   variable9 = NEW_parser_prod___ANeExpr___init_aneexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new ANeExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -22003,7 +22016,7 @@ void parser___ReduceAction293___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction293___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction293___init, 11607};
+  struct trace_t trace = {NULL, LOCATE_parser, 11612, LOCATE_parser___ReduceAction293___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction293].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction293].i] = 1;
@@ -22011,7 +22024,7 @@ void parser___ReduceAction293___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction294___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction294___action, 11611};
+  struct trace_t trace = {NULL, LOCATE_parser, 11616, LOCATE_parser___ReduceAction294___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22035,10 +22048,10 @@ void parser___ReduceAction294___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction294___action, 11619); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction294___action, LOCATE_parser, 11624); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction294___action, 11621); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction294___action, LOCATE_parser, 11626); nit_exit(1);}
   variable9 = NEW_parser_prod___ALtExpr___init_altexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new ALtExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -22048,7 +22061,7 @@ void parser___ReduceAction294___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction294___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction294___init, 11629};
+  struct trace_t trace = {NULL, LOCATE_parser, 11634, LOCATE_parser___ReduceAction294___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction294].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction294].i] = 1;
@@ -22056,7 +22069,7 @@ void parser___ReduceAction294___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction295___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction295___action, 11633};
+  struct trace_t trace = {NULL, LOCATE_parser, 11638, LOCATE_parser___ReduceAction295___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22080,10 +22093,10 @@ void parser___ReduceAction295___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction295___action, 11641); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction295___action, LOCATE_parser, 11646); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction295___action, 11643); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction295___action, LOCATE_parser, 11648); nit_exit(1);}
   variable9 = NEW_parser_prod___ALeExpr___init_aleexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new ALeExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -22093,7 +22106,7 @@ void parser___ReduceAction295___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction295___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction295___init, 11651};
+  struct trace_t trace = {NULL, LOCATE_parser, 11656, LOCATE_parser___ReduceAction295___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction295].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction295].i] = 1;
@@ -22101,7 +22114,7 @@ void parser___ReduceAction295___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction296___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction296___action, 11655};
+  struct trace_t trace = {NULL, LOCATE_parser, 11660, LOCATE_parser___ReduceAction296___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22125,10 +22138,10 @@ void parser___ReduceAction296___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction296___action, 11663); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction296___action, LOCATE_parser, 11668); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction296___action, 11665); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction296___action, LOCATE_parser, 11670); nit_exit(1);}
   variable9 = NEW_parser_prod___AGtExpr___init_agtexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AGtExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -22138,7 +22151,7 @@ void parser___ReduceAction296___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction296___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction296___init, 11673};
+  struct trace_t trace = {NULL, LOCATE_parser, 11678, LOCATE_parser___ReduceAction296___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction296].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction296].i] = 1;
@@ -22146,7 +22159,7 @@ void parser___ReduceAction296___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction297___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction297___action, 11677};
+  struct trace_t trace = {NULL, LOCATE_parser, 11682, LOCATE_parser___ReduceAction297___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22170,10 +22183,10 @@ void parser___ReduceAction297___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction297___action, 11685); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction297___action, LOCATE_parser, 11690); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction297___action, 11687); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction297___action, LOCATE_parser, 11692); nit_exit(1);}
   variable9 = NEW_parser_prod___AGeExpr___init_ageexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AGeExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -22183,7 +22196,7 @@ void parser___ReduceAction297___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction297___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction297___init, 11695};
+  struct trace_t trace = {NULL, LOCATE_parser, 11700, LOCATE_parser___ReduceAction297___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction297].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction297].i] = 1;
@@ -22191,7 +22204,7 @@ void parser___ReduceAction297___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction298___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction298___action, 11699};
+  struct trace_t trace = {NULL, LOCATE_parser, 11704, LOCATE_parser___ReduceAction298___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22215,10 +22228,10 @@ void parser___ReduceAction298___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction298___action, 11707); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction298___action, LOCATE_parser, 11712); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction298___action, 11709); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction298___action, LOCATE_parser, 11714); nit_exit(1);}
   variable9 = NEW_parser_prod___AStarshipExpr___init_astarshipexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AStarshipExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -22228,7 +22241,7 @@ void parser___ReduceAction298___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction298___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction298___init, 11717};
+  struct trace_t trace = {NULL, LOCATE_parser, 11722, LOCATE_parser___ReduceAction298___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction298].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction298].i] = 1;
@@ -22236,7 +22249,7 @@ void parser___ReduceAction298___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction299___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction299___action, 11721};
+  struct trace_t trace = {NULL, LOCATE_parser, 11726, LOCATE_parser___ReduceAction299___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22260,10 +22273,10 @@ void parser___ReduceAction299___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction299___action, 11729); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction299___action, LOCATE_parser, 11734); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable7 /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction299___action, 11731); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction299___action, LOCATE_parser, 11736); nit_exit(1);}
   variable9 = NEW_parser_prod___AIsaExpr___init_aisaexpr( variable6 /*pexprnode2*/,  variable7 /*ptypenode3*/); /*new AIsaExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -22273,7 +22286,7 @@ void parser___ReduceAction299___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction299___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction299___init, 11739};
+  struct trace_t trace = {NULL, LOCATE_parser, 11744, LOCATE_parser___ReduceAction299___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction299].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction299].i] = 1;
@@ -22281,7 +22294,7 @@ void parser___ReduceAction299___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction300___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction300___action, 11743};
+  struct trace_t trace = {NULL, LOCATE_parser, 11748, LOCATE_parser___ReduceAction300___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22294,7 +22307,7 @@ void parser___ReduceAction300___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction300___action, 11748); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction300___action, LOCATE_parser, 11753); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(43)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
@@ -22302,7 +22315,7 @@ void parser___ReduceAction300___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction300___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction300___init, 11752};
+  struct trace_t trace = {NULL, LOCATE_parser, 11757, LOCATE_parser___ReduceAction300___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction300].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction300].i] = 1;
@@ -22310,7 +22323,7 @@ void parser___ReduceAction300___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction301___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction301___action, 11756};
+  struct trace_t trace = {NULL, LOCATE_parser, 11761, LOCATE_parser___ReduceAction301___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22334,10 +22347,10 @@ void parser___ReduceAction301___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction301___action, 11764); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction301___action, LOCATE_parser, 11769); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction301___action, 11766); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction301___action, LOCATE_parser, 11771); nit_exit(1);}
   variable9 = NEW_parser_prod___APlusExpr___init_aplusexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new APlusExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -22347,7 +22360,7 @@ void parser___ReduceAction301___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction301___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction301___init, 11774};
+  struct trace_t trace = {NULL, LOCATE_parser, 11779, LOCATE_parser___ReduceAction301___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction301].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction301].i] = 1;
@@ -22355,7 +22368,7 @@ void parser___ReduceAction301___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction302___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction302___action, 11778};
+  struct trace_t trace = {NULL, LOCATE_parser, 11783, LOCATE_parser___ReduceAction302___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22379,10 +22392,10 @@ void parser___ReduceAction302___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction302___action, 11786); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction302___action, LOCATE_parser, 11791); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction302___action, 11788); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction302___action, LOCATE_parser, 11793); nit_exit(1);}
   variable9 = NEW_parser_prod___AMinusExpr___init_aminusexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AMinusExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -22392,7 +22405,7 @@ void parser___ReduceAction302___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction302___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction302___init, 11796};
+  struct trace_t trace = {NULL, LOCATE_parser, 11801, LOCATE_parser___ReduceAction302___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction302].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction302].i] = 1;
@@ -22400,7 +22413,7 @@ void parser___ReduceAction302___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction303___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction303___action, 11800};
+  struct trace_t trace = {NULL, LOCATE_parser, 11805, LOCATE_parser___ReduceAction303___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22413,7 +22426,7 @@ void parser___ReduceAction303___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction303___action, 11805); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction303___action, LOCATE_parser, 11810); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(44)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
@@ -22421,7 +22434,7 @@ void parser___ReduceAction303___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction303___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction303___init, 11809};
+  struct trace_t trace = {NULL, LOCATE_parser, 11814, LOCATE_parser___ReduceAction303___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction303].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction303].i] = 1;
@@ -22429,7 +22442,7 @@ void parser___ReduceAction303___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction304___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction304___action, 11813};
+  struct trace_t trace = {NULL, LOCATE_parser, 11818, LOCATE_parser___ReduceAction304___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22453,10 +22466,10 @@ void parser___ReduceAction304___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction304___action, 11821); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction304___action, LOCATE_parser, 11826); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction304___action, 11823); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction304___action, LOCATE_parser, 11828); nit_exit(1);}
   variable9 = NEW_parser_prod___AStarExpr___init_astarexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AStarExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -22466,7 +22479,7 @@ void parser___ReduceAction304___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction304___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction304___init, 11831};
+  struct trace_t trace = {NULL, LOCATE_parser, 11836, LOCATE_parser___ReduceAction304___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction304].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction304].i] = 1;
@@ -22474,7 +22487,7 @@ void parser___ReduceAction304___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction305___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction305___action, 11835};
+  struct trace_t trace = {NULL, LOCATE_parser, 11840, LOCATE_parser___ReduceAction305___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22498,10 +22511,10 @@ void parser___ReduceAction305___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction305___action, 11843); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction305___action, LOCATE_parser, 11848); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction305___action, 11845); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction305___action, LOCATE_parser, 11850); nit_exit(1);}
   variable9 = NEW_parser_prod___ASlashExpr___init_aslashexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new ASlashExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -22511,7 +22524,7 @@ void parser___ReduceAction305___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction305___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction305___init, 11853};
+  struct trace_t trace = {NULL, LOCATE_parser, 11858, LOCATE_parser___ReduceAction305___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction305].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction305].i] = 1;
@@ -22519,7 +22532,7 @@ void parser___ReduceAction305___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction306___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction306___action, 11857};
+  struct trace_t trace = {NULL, LOCATE_parser, 11862, LOCATE_parser___ReduceAction306___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22543,10 +22556,10 @@ void parser___ReduceAction306___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction306___action, 11865); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction306___action, LOCATE_parser, 11870); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction306___action, 11867); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction306___action, LOCATE_parser, 11872); nit_exit(1);}
   variable9 = NEW_parser_prod___APercentExpr___init_apercentexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new APercentExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -22556,7 +22569,7 @@ void parser___ReduceAction306___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction306___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction306___init, 11875};
+  struct trace_t trace = {NULL, LOCATE_parser, 11880, LOCATE_parser___ReduceAction306___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction306].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction306].i] = 1;
@@ -22564,7 +22577,7 @@ void parser___ReduceAction306___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction307___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction307___action, 11879};
+  struct trace_t trace = {NULL, LOCATE_parser, 11884, LOCATE_parser___ReduceAction307___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22577,7 +22590,7 @@ void parser___ReduceAction307___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction307___action, 11884); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction307___action, LOCATE_parser, 11889); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(45)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
@@ -22585,7 +22598,7 @@ void parser___ReduceAction307___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction307___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction307___init, 11888};
+  struct trace_t trace = {NULL, LOCATE_parser, 11893, LOCATE_parser___ReduceAction307___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction307].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction307].i] = 1;
@@ -22593,7 +22606,7 @@ void parser___ReduceAction307___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction308___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction308___action, 11892};
+  struct trace_t trace = {NULL, LOCATE_parser, 11897, LOCATE_parser___ReduceAction308___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22614,10 +22627,10 @@ void parser___ReduceAction308___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tminusnode2*/==NIT_NULL) || VAL_ISA( variable5 /*tminusnode2*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction308___action, 11899); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction308___action, LOCATE_parser, 11904); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist3*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction308___action, 11901); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction308___action, LOCATE_parser, 11906); nit_exit(1);}
   variable8 = NEW_parser_prod___AUminusExpr___init_auminusexpr( variable5 /*tminusnode2*/,  variable6 /*pexprnode3*/); /*new AUminusExpr*/
   variable7 = variable8;
   variable1 =  variable7 /*pexprnode1*/ /*node_list=*/;
@@ -22627,7 +22640,7 @@ void parser___ReduceAction308___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction308___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction308___init, 11909};
+  struct trace_t trace = {NULL, LOCATE_parser, 11914, LOCATE_parser___ReduceAction308___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction308].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction308].i] = 1;
@@ -22635,7 +22648,7 @@ void parser___ReduceAction308___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction309___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction309___action, 11913};
+  struct trace_t trace = {NULL, LOCATE_parser, 11918, LOCATE_parser___ReduceAction309___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22656,10 +22669,10 @@ void parser___ReduceAction309___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tkwoncenode2*/==NIT_NULL) || VAL_ISA( variable5 /*tkwoncenode2*/, COLOR_TKwonce, ID_TKwonce)) /*cast TKwonce*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction309___action, 11920); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction309___action, LOCATE_parser, 11925); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist3*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction309___action, 11922); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction309___action, LOCATE_parser, 11927); nit_exit(1);}
   variable8 = NEW_parser_prod___AOnceExpr___init_aonceexpr( variable5 /*tkwoncenode2*/,  variable6 /*pexprnode3*/); /*new AOnceExpr*/
   variable7 = variable8;
   variable1 =  variable7 /*pexprnode1*/ /*node_list=*/;
@@ -22669,7 +22682,7 @@ void parser___ReduceAction309___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction309___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction309___init, 11930};
+  struct trace_t trace = {NULL, LOCATE_parser, 11935, LOCATE_parser___ReduceAction309___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction309].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction309].i] = 1;
@@ -22677,7 +22690,7 @@ void parser___ReduceAction309___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction310___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction310___action, 11934};
+  struct trace_t trace = {NULL, LOCATE_parser, 11939, LOCATE_parser___ReduceAction310___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22690,7 +22703,7 @@ void parser___ReduceAction310___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction310___action, 11939); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction310___action, LOCATE_parser, 11944); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(46)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
@@ -22698,7 +22711,7 @@ void parser___ReduceAction310___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction310___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction310___init, 11943};
+  struct trace_t trace = {NULL, LOCATE_parser, 11948, LOCATE_parser___ReduceAction310___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction310].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction310].i] = 1;
@@ -22706,7 +22719,7 @@ void parser___ReduceAction310___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction311___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction311___action, 11947};
+  struct trace_t trace = {NULL, LOCATE_parser, 11952, LOCATE_parser___ReduceAction311___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22730,24 +22743,24 @@ void parser___ReduceAction311___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable5 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*tkwnewnode2*/==NIT_NULL) || VAL_ISA( variable7 /*tkwnewnode2*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction311___action, 11956); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction311___action, LOCATE_parser, 11961); nit_exit(1);}
   variable8 =  variable3 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable8 /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction311___action, 11958); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction311___action, LOCATE_parser, 11963); nit_exit(1);}
   variable9 =  variable2 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*listnode5*/==NIT_NULL) || VAL_ISA( variable9 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction311___action, 11960); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction311___action, LOCATE_parser, 11965); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode6*/) /*Array::is_empty*/;
+    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable10)) { /*if*/
       variable6 =  variable9 /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode6*/,  variable9 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode6*/,  variable9 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable11 = NEW_parser_prod___ANewExpr___init_anewexpr( variable7 /*tkwnewnode2*/,  variable8 /*ptypenode3*/,  NIT_NULL /*null*/,  variable6 /*listnode6*/); /*new ANewExpr*/
@@ -22759,7 +22772,7 @@ void parser___ReduceAction311___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction311___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction311___init, 11977};
+  struct trace_t trace = {NULL, LOCATE_parser, 11982, LOCATE_parser___ReduceAction311___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction311].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction311].i] = 1;
@@ -22767,7 +22780,7 @@ void parser___ReduceAction311___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction312___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction312___action, 11981};
+  struct trace_t trace = {NULL, LOCATE_parser, 11986, LOCATE_parser___ReduceAction312___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22791,10 +22804,10 @@ void parser___ReduceAction312___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction312___action, 11989); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction312___action, LOCATE_parser, 11994); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable7 /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction312___action, 11991); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction312___action, LOCATE_parser, 11996); nit_exit(1);}
   variable9 = NEW_parser_prod___AAttrExpr___init_aattrexpr( variable6 /*pexprnode2*/,  variable7 /*tattridnode3*/); /*new AAttrExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -22804,7 +22817,7 @@ void parser___ReduceAction312___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction312___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction312___init, 11999};
+  struct trace_t trace = {NULL, LOCATE_parser, 12004, LOCATE_parser___ReduceAction312___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction312].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction312].i] = 1;
@@ -22812,7 +22825,7 @@ void parser___ReduceAction312___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction313___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction313___action, 12003};
+  struct trace_t trace = {NULL, LOCATE_parser, 12008, LOCATE_parser___ReduceAction313___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22829,7 +22842,7 @@ void parser___ReduceAction313___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable4 /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction313___action, 12010); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction313___action, LOCATE_parser, 12015); nit_exit(1);}
   variable6 = NEW_parser_prod___AAttrExpr___init_aattrexpr( variable3 /*pexprnode2*/,  variable4 /*tattridnode3*/); /*new AAttrExpr*/
   variable5 = variable6;
   variable1 =  variable5 /*pexprnode1*/ /*node_list=*/;
@@ -22839,7 +22852,7 @@ void parser___ReduceAction313___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction313___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction313___init, 12018};
+  struct trace_t trace = {NULL, LOCATE_parser, 12023, LOCATE_parser___ReduceAction313___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction313].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction313].i] = 1;
@@ -22847,7 +22860,7 @@ void parser___ReduceAction313___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction314___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction314___action, 12022};
+  struct trace_t trace = {NULL, LOCATE_parser, 12027, LOCATE_parser___ReduceAction314___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22874,24 +22887,24 @@ void parser___ReduceAction314___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable6 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction314___action, 12032); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction314___action, LOCATE_parser, 12037); nit_exit(1);}
   variable9 =  variable3 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable9 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction314___action, 12034); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction314___action, LOCATE_parser, 12039); nit_exit(1);}
   variable10 =  variable2 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*listnode4*/==NIT_NULL) || VAL_ISA( variable10 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction314___action, 12036); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction314___action, LOCATE_parser, 12041); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable7 =  variable10 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable12 = NEW_parser_prod___ACallExpr___init_acallexpr( variable8 /*pexprnode2*/,  variable9 /*tidnode3*/,  variable7 /*listnode5*/); /*new ACallExpr*/
@@ -22903,7 +22916,7 @@ void parser___ReduceAction314___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction314___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction314___init, 12052};
+  struct trace_t trace = {NULL, LOCATE_parser, 12057, LOCATE_parser___ReduceAction314___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction314].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction314].i] = 1;
@@ -22911,7 +22924,7 @@ void parser___ReduceAction314___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction315___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction315___action, 12056};
+  struct trace_t trace = {NULL, LOCATE_parser, 12061, LOCATE_parser___ReduceAction315___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22929,23 +22942,23 @@ void parser___ReduceAction315___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable6 = NEW_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable6 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction315___action, 12065); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction315___action, LOCATE_parser, 12070); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*listnode4*/==NIT_NULL) || VAL_ISA( variable7 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction315___action, 12067); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction315___action, LOCATE_parser, 12072); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*Array::is_empty*/;
+    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable8)) { /*if*/
       variable4 =  variable7 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable9 = NEW_parser_prod___ACallExpr___init_acallexpr( variable5 /*pexprnode2*/,  variable6 /*tidnode3*/,  variable4 /*listnode5*/); /*new ACallExpr*/
@@ -22957,7 +22970,7 @@ void parser___ReduceAction315___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction315___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction315___init, 12083};
+  struct trace_t trace = {NULL, LOCATE_parser, 12088, LOCATE_parser___ReduceAction315___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction315].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction315].i] = 1;
@@ -22965,7 +22978,7 @@ void parser___ReduceAction315___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction316___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction316___action, 12087};
+  struct trace_t trace = {NULL, LOCATE_parser, 12092, LOCATE_parser___ReduceAction316___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -22982,21 +22995,21 @@ void parser___ReduceAction316___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable5 /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction316___action, 12094); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction316___action, LOCATE_parser, 12099); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*listnode4*/==NIT_NULL) || VAL_ISA( variable6 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction316___action, 12096); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction316___action, LOCATE_parser, 12101); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable6 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable6 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable6 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable8 = NEW_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable5 /*tkwsupernode3*/,  variable4 /*listnode5*/); /*new ASuperExpr*/
@@ -23008,7 +23021,7 @@ void parser___ReduceAction316___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction316___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction316___init, 12112};
+  struct trace_t trace = {NULL, LOCATE_parser, 12117, LOCATE_parser___ReduceAction316___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction316].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction316].i] = 1;
@@ -23016,7 +23029,7 @@ void parser___ReduceAction316___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction317___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction317___action, 12116};
+  struct trace_t trace = {NULL, LOCATE_parser, 12121, LOCATE_parser___ReduceAction317___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23037,24 +23050,24 @@ void parser___ReduceAction317___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable6 =  variable4 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pqualifiednode2*/==NIT_NULL) || VAL_ISA( variable6 /*pqualifiednode2*/, COLOR_PQualified, ID_PQualified)) /*cast PQualified*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction317___action, 12124); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction317___action, LOCATE_parser, 12129); nit_exit(1);}
   variable7 =  variable3 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable7 /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction317___action, 12126); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction317___action, LOCATE_parser, 12131); nit_exit(1);}
   variable8 =  variable2 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*listnode4*/==NIT_NULL) || VAL_ISA( variable8 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction317___action, 12128); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction317___action, LOCATE_parser, 12133); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable5 =  variable8 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable8 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable8 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable10 = NEW_parser_prod___ASuperExpr___init_asuperexpr( variable6 /*pqualifiednode2*/,  variable7 /*tkwsupernode3*/,  variable5 /*listnode5*/); /*new ASuperExpr*/
@@ -23066,7 +23079,7 @@ void parser___ReduceAction317___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction317___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction317___init, 12144};
+  struct trace_t trace = {NULL, LOCATE_parser, 12149, LOCATE_parser___ReduceAction317___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction317].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction317].i] = 1;
@@ -23074,7 +23087,7 @@ void parser___ReduceAction317___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction318___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction318___action, 12148};
+  struct trace_t trace = {NULL, LOCATE_parser, 12153, LOCATE_parser___ReduceAction318___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23101,24 +23114,24 @@ void parser___ReduceAction318___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable6 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction318___action, 12158); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction318___action, LOCATE_parser, 12163); nit_exit(1);}
   variable9 =  variable3 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable9 /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction318___action, 12160); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction318___action, LOCATE_parser, 12165); nit_exit(1);}
   variable10 =  variable2 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*listnode4*/==NIT_NULL) || VAL_ISA( variable10 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction318___action, 12162); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction318___action, LOCATE_parser, 12167); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable7 =  variable10 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable12 = NEW_parser_prod___AInitExpr___init_ainitexpr( variable8 /*pexprnode2*/,  variable9 /*tkwinitnode3*/,  variable7 /*listnode5*/); /*new AInitExpr*/
@@ -23130,7 +23143,7 @@ void parser___ReduceAction318___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction318___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction318___init, 12178};
+  struct trace_t trace = {NULL, LOCATE_parser, 12183, LOCATE_parser___ReduceAction318___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction318].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction318].i] = 1;
@@ -23138,7 +23151,7 @@ void parser___ReduceAction318___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction319___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction319___action, 12182};
+  struct trace_t trace = {NULL, LOCATE_parser, 12187, LOCATE_parser___ReduceAction319___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23156,23 +23169,23 @@ void parser___ReduceAction319___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable6 = NEW_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable6 /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction319___action, 12191); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction319___action, LOCATE_parser, 12196); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*listnode4*/==NIT_NULL) || VAL_ISA( variable7 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction319___action, 12193); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction319___action, LOCATE_parser, 12198); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*Array::is_empty*/;
+    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable8)) { /*if*/
       variable4 =  variable7 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable9 = NEW_parser_prod___AInitExpr___init_ainitexpr( variable5 /*pexprnode2*/,  variable6 /*tkwinitnode3*/,  variable4 /*listnode5*/); /*new AInitExpr*/
@@ -23184,7 +23197,7 @@ void parser___ReduceAction319___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction319___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction319___init, 12209};
+  struct trace_t trace = {NULL, LOCATE_parser, 12214, LOCATE_parser___ReduceAction319___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction319].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction319].i] = 1;
@@ -23192,7 +23205,7 @@ void parser___ReduceAction319___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction320___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction320___action, 12213};
+  struct trace_t trace = {NULL, LOCATE_parser, 12218, LOCATE_parser___ReduceAction320___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23209,21 +23222,21 @@ void parser___ReduceAction320___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable5 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction320___action, 12220); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction320___action, LOCATE_parser, 12225); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*listnode3*/==NIT_NULL) || VAL_ISA( variable6 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction320___action, 12222); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable6 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction320___action, LOCATE_parser, 12227); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode4*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable6 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode4*/,  variable6 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode4*/,  variable6 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable8 = NEW_parser_prod___ABraExpr___init_abraexpr( variable5 /*pexprnode2*/,  variable4 /*listnode4*/); /*new ABraExpr*/
@@ -23235,7 +23248,7 @@ void parser___ReduceAction320___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction320___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction320___init, 12237};
+  struct trace_t trace = {NULL, LOCATE_parser, 12242, LOCATE_parser___ReduceAction320___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction320].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction320].i] = 1;
@@ -23243,7 +23256,7 @@ void parser___ReduceAction320___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction321___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction321___action, 12241};
+  struct trace_t trace = {NULL, LOCATE_parser, 12246, LOCATE_parser___ReduceAction321___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23277,27 +23290,27 @@ void parser___ReduceAction321___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable9 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable8 = variable9;
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
   variable10 =  variable8 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*tkwnewnode2*/==NIT_NULL) || VAL_ISA( variable10 /*tkwnewnode2*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction321___action, 12253); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction321___action, LOCATE_parser, 12258); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable11 /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction321___action, 12255); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction321___action, LOCATE_parser, 12260); nit_exit(1);}
   variable12 =  variable3 /*nodearraylist6*/;
   variable13 = TAG_Bool(( variable12 /*tidnode4*/==NIT_NULL) || VAL_ISA( variable12 /*tidnode4*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction321___action, 12257); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction321___action, LOCATE_parser, 12262); nit_exit(1);}
   variable13 =  variable2 /*nodearraylist7*/;
   variable14 = TAG_Bool(( variable13 /*listnode5*/==NIT_NULL) || VAL_ISA( variable13 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction321___action, 12259); nit_exit(1);}
-  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable13 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction321___action, LOCATE_parser, 12264); nit_exit(1);}
+  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable14)) { /*if*/
-    variable14 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode6*/) /*Array::is_empty*/;
+    variable14 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable14)) { /*if*/
       variable9 =  variable13 /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode6*/,  variable13 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode6*/,  variable13 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable15 = NEW_parser_prod___ANewExpr___init_anewexpr( variable10 /*tkwnewnode2*/,  variable11 /*ptypenode3*/,  variable12 /*tidnode4*/,  variable9 /*listnode6*/); /*new ANewExpr*/
@@ -23309,7 +23322,7 @@ void parser___ReduceAction321___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction321___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction321___init, 12276};
+  struct trace_t trace = {NULL, LOCATE_parser, 12281, LOCATE_parser___ReduceAction321___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction321].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction321].i] = 1;
@@ -23317,7 +23330,7 @@ void parser___ReduceAction321___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction322___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction322___action, 12280};
+  struct trace_t trace = {NULL, LOCATE_parser, 12285, LOCATE_parser___ReduceAction322___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23356,10 +23369,10 @@ void parser___ReduceAction322___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable8 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction322___action, 12293); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction322___action, LOCATE_parser, 12298); nit_exit(1);}
   variable12 =  variable4 /*nodearraylist7*/;
   variable13 = TAG_Bool(( variable12 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable12 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction322___action, 12295); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction322___action, LOCATE_parser, 12300); nit_exit(1);}
   variable14 = NEW_parser_prod___ACrangeExpr___init_acrangeexpr( variable11 /*pexprnode2*/,  variable12 /*pexprnode3*/); /*new ACrangeExpr*/
   variable13 = variable14;
   variable1 =  variable13 /*pexprnode1*/ /*node_list=*/;
@@ -23369,7 +23382,7 @@ void parser___ReduceAction322___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction322___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction322___init, 12303};
+  struct trace_t trace = {NULL, LOCATE_parser, 12308, LOCATE_parser___ReduceAction322___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction322].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction322].i] = 1;
@@ -23377,7 +23390,7 @@ void parser___ReduceAction322___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction323___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction323___action, 12307};
+  struct trace_t trace = {NULL, LOCATE_parser, 12312, LOCATE_parser___ReduceAction323___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23416,10 +23429,10 @@ void parser___ReduceAction323___action(val_t  self, val_t  param0) {
   variable10 = variable11;
   variable11 =  variable8 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable11 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction323___action, 12320); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction323___action, LOCATE_parser, 12325); nit_exit(1);}
   variable12 =  variable4 /*nodearraylist7*/;
   variable13 = TAG_Bool(( variable12 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable12 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction323___action, 12322); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction323___action, LOCATE_parser, 12327); nit_exit(1);}
   variable14 = NEW_parser_prod___AOrangeExpr___init_aorangeexpr( variable11 /*pexprnode2*/,  variable12 /*pexprnode3*/); /*new AOrangeExpr*/
   variable13 = variable14;
   variable1 =  variable13 /*pexprnode1*/ /*node_list=*/;
@@ -23429,7 +23442,7 @@ void parser___ReduceAction323___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction323___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction323___init, 12330};
+  struct trace_t trace = {NULL, LOCATE_parser, 12335, LOCATE_parser___ReduceAction323___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction323].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction323].i] = 1;
@@ -23437,7 +23450,7 @@ void parser___ReduceAction323___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction324___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction324___action, 12334};
+  struct trace_t trace = {NULL, LOCATE_parser, 12339, LOCATE_parser___ReduceAction324___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23450,18 +23463,18 @@ void parser___ReduceAction324___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*listnode2*/==NIT_NULL) || VAL_ISA( variable4 /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction324___action, 12340); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable4 /*listnode2*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable4 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable4 /*listnode2*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction324___action, LOCATE_parser, 12345); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable4 /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable4 /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    variable5 = ((array___AbstractArray___is_empty_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable3 /*listnode3*/) /*Array::is_empty*/;
+    variable5 = ((array___AbstractArray___is_empty_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable3 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable5)) { /*if*/
       variable3 =  variable4 /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable3 /*listnode3*/,  variable4 /*listnode2*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable3 /*listnode3*/,  variable4 /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable6 = NEW_parser_prod___AArrayExpr___init_aarrayexpr( variable3 /*listnode3*/); /*new AArrayExpr*/
@@ -23473,7 +23486,7 @@ void parser___ReduceAction324___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction324___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction324___init, 12354};
+  struct trace_t trace = {NULL, LOCATE_parser, 12359, LOCATE_parser___ReduceAction324___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction324].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction324].i] = 1;
@@ -23481,7 +23494,7 @@ void parser___ReduceAction324___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction325___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction325___action, 12358};
+  struct trace_t trace = {NULL, LOCATE_parser, 12363, LOCATE_parser___ReduceAction325___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23495,7 +23508,7 @@ void parser___ReduceAction325___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwselfnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwselfnode2*/, COLOR_TKwself, ID_TKwself)) /*cast TKwself*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction325___action, 12363); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction325___action, LOCATE_parser, 12368); nit_exit(1);}
   variable5 = NEW_parser_prod___ASelfExpr___init_aselfexpr( variable3 /*tkwselfnode2*/); /*new ASelfExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -23505,7 +23518,7 @@ void parser___ReduceAction325___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction325___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction325___init, 12370};
+  struct trace_t trace = {NULL, LOCATE_parser, 12375, LOCATE_parser___ReduceAction325___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction325].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction325].i] = 1;
@@ -23513,7 +23526,7 @@ void parser___ReduceAction325___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction326___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction326___action, 12374};
+  struct trace_t trace = {NULL, LOCATE_parser, 12379, LOCATE_parser___ReduceAction326___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23527,7 +23540,7 @@ void parser___ReduceAction326___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwtruenode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwtruenode2*/, COLOR_TKwtrue, ID_TKwtrue)) /*cast TKwtrue*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction326___action, 12379); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction326___action, LOCATE_parser, 12384); nit_exit(1);}
   variable5 = NEW_parser_prod___ATrueExpr___init_atrueexpr( variable3 /*tkwtruenode2*/); /*new ATrueExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -23537,7 +23550,7 @@ void parser___ReduceAction326___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction326___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction326___init, 12386};
+  struct trace_t trace = {NULL, LOCATE_parser, 12391, LOCATE_parser___ReduceAction326___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction326].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction326].i] = 1;
@@ -23545,7 +23558,7 @@ void parser___ReduceAction326___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction327___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction327___action, 12390};
+  struct trace_t trace = {NULL, LOCATE_parser, 12395, LOCATE_parser___ReduceAction327___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23559,7 +23572,7 @@ void parser___ReduceAction327___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwfalsenode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwfalsenode2*/, COLOR_TKwfalse, ID_TKwfalse)) /*cast TKwfalse*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction327___action, 12395); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction327___action, LOCATE_parser, 12400); nit_exit(1);}
   variable5 = NEW_parser_prod___AFalseExpr___init_afalseexpr( variable3 /*tkwfalsenode2*/); /*new AFalseExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -23569,7 +23582,7 @@ void parser___ReduceAction327___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction327___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction327___init, 12402};
+  struct trace_t trace = {NULL, LOCATE_parser, 12407, LOCATE_parser___ReduceAction327___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction327].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction327].i] = 1;
@@ -23577,7 +23590,7 @@ void parser___ReduceAction327___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction328___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction328___action, 12406};
+  struct trace_t trace = {NULL, LOCATE_parser, 12411, LOCATE_parser___ReduceAction328___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23591,7 +23604,7 @@ void parser___ReduceAction328___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwnullnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwnullnode2*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction328___action, 12411); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction328___action, LOCATE_parser, 12416); nit_exit(1);}
   variable5 = NEW_parser_prod___ANullExpr___init_anullexpr( variable3 /*tkwnullnode2*/); /*new ANullExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -23601,7 +23614,7 @@ void parser___ReduceAction328___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction328___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction328___init, 12418};
+  struct trace_t trace = {NULL, LOCATE_parser, 12423, LOCATE_parser___ReduceAction328___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction328].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction328].i] = 1;
@@ -23609,7 +23622,7 @@ void parser___ReduceAction328___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction329___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction329___action, 12422};
+  struct trace_t trace = {NULL, LOCATE_parser, 12427, LOCATE_parser___ReduceAction329___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23623,7 +23636,7 @@ void parser___ReduceAction329___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tnumbernode2*/==NIT_NULL) || VAL_ISA( variable3 /*tnumbernode2*/, COLOR_TNumber, ID_TNumber)) /*cast TNumber*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction329___action, 12427); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction329___action, LOCATE_parser, 12432); nit_exit(1);}
   variable5 = NEW_parser_prod___AIntExpr___init_aintexpr( variable3 /*tnumbernode2*/); /*new AIntExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -23633,7 +23646,7 @@ void parser___ReduceAction329___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction329___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction329___init, 12434};
+  struct trace_t trace = {NULL, LOCATE_parser, 12439, LOCATE_parser___ReduceAction329___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction329].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction329].i] = 1;
@@ -23641,7 +23654,7 @@ void parser___ReduceAction329___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction330___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction330___action, 12438};
+  struct trace_t trace = {NULL, LOCATE_parser, 12443, LOCATE_parser___ReduceAction330___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23655,7 +23668,7 @@ void parser___ReduceAction330___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tfloatnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tfloatnode2*/, COLOR_TFloat, ID_TFloat)) /*cast TFloat*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction330___action, 12443); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction330___action, LOCATE_parser, 12448); nit_exit(1);}
   variable5 = NEW_parser_prod___AFloatExpr___init_afloatexpr( variable3 /*tfloatnode2*/); /*new AFloatExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -23665,7 +23678,7 @@ void parser___ReduceAction330___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction330___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction330___init, 12450};
+  struct trace_t trace = {NULL, LOCATE_parser, 12455, LOCATE_parser___ReduceAction330___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction330].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction330].i] = 1;
@@ -23673,7 +23686,7 @@ void parser___ReduceAction330___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction331___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction331___action, 12454};
+  struct trace_t trace = {NULL, LOCATE_parser, 12459, LOCATE_parser___ReduceAction331___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23687,7 +23700,7 @@ void parser___ReduceAction331___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tcharnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tcharnode2*/, COLOR_TChar, ID_TChar)) /*cast TChar*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction331___action, 12459); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction331___action, LOCATE_parser, 12464); nit_exit(1);}
   variable5 = NEW_parser_prod___ACharExpr___init_acharexpr( variable3 /*tcharnode2*/); /*new ACharExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -23697,7 +23710,7 @@ void parser___ReduceAction331___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction331___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction331___init, 12466};
+  struct trace_t trace = {NULL, LOCATE_parser, 12471, LOCATE_parser___ReduceAction331___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction331].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction331].i] = 1;
@@ -23705,7 +23718,7 @@ void parser___ReduceAction331___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction332___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction332___action, 12470};
+  struct trace_t trace = {NULL, LOCATE_parser, 12475, LOCATE_parser___ReduceAction332___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23719,7 +23732,7 @@ void parser___ReduceAction332___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tstringnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tstringnode2*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction332___action, 12475); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction332___action, LOCATE_parser, 12480); nit_exit(1);}
   variable5 = NEW_parser_prod___AStringExpr___init_astringexpr( variable3 /*tstringnode2*/); /*new AStringExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -23729,7 +23742,7 @@ void parser___ReduceAction332___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction332___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction332___init, 12482};
+  struct trace_t trace = {NULL, LOCATE_parser, 12487, LOCATE_parser___ReduceAction332___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction332].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction332].i] = 1;
@@ -23737,7 +23750,7 @@ void parser___ReduceAction332___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction333___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction333___action, 12486};
+  struct trace_t trace = {NULL, LOCATE_parser, 12491, LOCATE_parser___ReduceAction333___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23750,7 +23763,7 @@ void parser___ReduceAction333___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction333___action, 12491); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction333___action, LOCATE_parser, 12496); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
@@ -23758,7 +23771,7 @@ void parser___ReduceAction333___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction333___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction333___init, 12495};
+  struct trace_t trace = {NULL, LOCATE_parser, 12500, LOCATE_parser___ReduceAction333___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction333].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction333].i] = 1;
@@ -23766,7 +23779,7 @@ void parser___ReduceAction333___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction334___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction334___action, 12499};
+  struct trace_t trace = {NULL, LOCATE_parser, 12504, LOCATE_parser___ReduceAction334___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23785,7 +23798,7 @@ void parser___ReduceAction334___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist2*/;
   variable6 = TAG_Bool(( variable5 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable5 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction334___action, 12506); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction334___action, LOCATE_parser, 12511); nit_exit(1);}
   variable1 =  variable5 /*pexprnode1*/ /*node_list=*/;
   variable6 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable6,  variable1 /*node_list*/) /*Parser::push*/;
@@ -23793,7 +23806,7 @@ void parser___ReduceAction334___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction334___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction334___init, 12510};
+  struct trace_t trace = {NULL, LOCATE_parser, 12515, LOCATE_parser___ReduceAction334___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction334].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction334].i] = 1;
@@ -23801,7 +23814,74 @@ void parser___ReduceAction334___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction335___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction335___action, 12514};
+  struct trace_t trace = {NULL, LOCATE_parser, 12519, LOCATE_parser___ReduceAction335___action};
+  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 =  NIT_NULL /*null*/;
+  variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable2 = variable3;
+  variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable3 = variable4;
+  variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable4 = variable5;
+  variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable5 = variable6;
+  variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable6 = variable7;
+  variable8 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable7 = variable8;
+  variable9 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable8 = variable9;
+  variable10 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable9 = variable10;
+  variable11 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable10 = variable11;
+  variable12 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable11 = variable12;
+  variable12 =  variable11 /*nodearraylist1*/;
+  variable13 = TAG_Bool(( variable12 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction335___action, LOCATE_parser, 12533); nit_exit(1);}
+  variable13 =  variable8 /*nodearraylist4*/;
+  variable14 = TAG_Bool(( variable13 /*tkwasnode3*/==NIT_NULL) || VAL_ISA( variable13 /*tkwasnode3*/, COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction335___action, LOCATE_parser, 12535); nit_exit(1);}
+  variable14 =  variable4 /*nodearraylist8*/;
+  variable15 = TAG_Bool(( variable14 /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable14 /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction335___action, LOCATE_parser, 12537); nit_exit(1);}
+  variable16 = NEW_parser_prod___AAsCastExpr___init_aascastexpr( variable12 /*pexprnode2*/,  variable13 /*tkwasnode3*/,  variable14 /*ptypenode4*/); /*new AAsCastExpr*/
+  variable15 = variable16;
+  variable1 =  variable15 /*pexprnode1*/ /*node_list=*/;
+  variable16 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(47)) /*Parser::go_to*/;
+  ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable16,  variable1 /*node_list*/) /*Parser::push*/;
+  tracehead = trace.prev;
+  return;
+}
+void parser___ReduceAction335___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12546, LOCATE_parser___ReduceAction335___init};
+  trace.prev = tracehead; tracehead = &trace;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction335].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction335].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser___ReduceAction336___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12550, LOCATE_parser___ReduceAction336___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23818,26 +23898,26 @@ void parser___ReduceAction335___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode2*/==NIT_NULL) || VAL_ISA( variable5 /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction335___action, 12521); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction336___action, LOCATE_parser, 12557); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction335___action, 12523); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode2*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode2*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction336___action, LOCATE_parser, 12559); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode4*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable5 /*listnode2*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode4*/,  variable5 /*listnode2*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode4*/,  variable5 /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*pexprnode3*/ ==  NIT_NULL /*null*/) || (( variable6 /*pexprnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*pexprnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*pexprnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*pexprnode3*/,COLOR_kernel___Object_____eqeq))( variable6 /*pexprnode3*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*pexprnode3*/ ==  NIT_NULL /*null*/) || (( variable6 /*pexprnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*pexprnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*pexprnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*pexprnode3*/,COLOR_kernel___Object_____eqeq))( variable6 /*pexprnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode4*/,  variable6 /*pexprnode3*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable4 /*listnode4*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode4*/,  variable6 /*pexprnode3*/) /*AbstractArray::add*/;
   }
   variable8 = NEW_parser_prod___ASuperstringExpr___init_asuperstringexpr( variable4 /*listnode4*/); /*new ASuperstringExpr*/
   variable7 = variable8;
@@ -23847,16 +23927,16 @@ void parser___ReduceAction335___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction335___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction335___init, 12540};
+void parser___ReduceAction336___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12576, LOCATE_parser___ReduceAction336___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction335].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction335].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction336].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction336].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction336___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction336___action, 12544};
+void parser___ReduceAction337___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12580, LOCATE_parser___ReduceAction337___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23877,38 +23957,38 @@ void parser___ReduceAction336___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable6 =  variable4 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*listnode2*/==NIT_NULL) || VAL_ISA( variable6 /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction336___action, 12552); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction337___action, LOCATE_parser, 12588); nit_exit(1);}
   variable7 =  variable3 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*listnode3*/==NIT_NULL) || VAL_ISA( variable7 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction336___action, 12554); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction337___action, LOCATE_parser, 12590); nit_exit(1);}
   variable8 =  variable2 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction336___action, 12556); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode2*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable6 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode2*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction337___action, LOCATE_parser, 12592); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable5 =  variable6 /*listnode2*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable6 /*listnode2*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable6 /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable7 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable5 =  variable7 /*listnode3*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable7 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable7 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*pexprnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*pexprnode4*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pexprnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*pexprnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pexprnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*pexprnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*listnode5*/,  variable8 /*pexprnode4*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___SimpleCollection___add))( variable5 /*listnode5*/,  variable8 /*pexprnode4*/) /*AbstractArray::add*/;
   }
   variable10 = NEW_parser_prod___ASuperstringExpr___init_asuperstringexpr( variable5 /*listnode5*/); /*new ASuperstringExpr*/
   variable9 = variable10;
@@ -23918,16 +23998,16 @@ void parser___ReduceAction336___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction336___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction336___init, 12580};
+void parser___ReduceAction337___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12616, LOCATE_parser___ReduceAction337___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction336].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction336].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction337].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction337].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction337___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction337___action, 12584};
+void parser___ReduceAction338___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12620, LOCATE_parser___ReduceAction338___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23949,21 +24029,21 @@ void parser___ReduceAction337___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable5 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction337___action, 12593); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction338___action, LOCATE_parser, 12629); nit_exit(1);}
   variable8 =  variable3 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction337___action, 12595); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable7 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable7 /*pexprnode1*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction338___action, LOCATE_parser, 12631); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable7 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable7 /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable6 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode3*/,  variable7 /*pexprnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable6 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode3*/,  variable7 /*pexprnode1*/) /*AbstractArray::add*/;
   }
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable8 /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable8 /*pexprnode2*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable8 /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable8 /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable6 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode3*/,  variable8 /*pexprnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable6 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode3*/,  variable8 /*pexprnode2*/) /*AbstractArray::add*/;
   }
   variable1 =  variable6 /*listnode3*/ /*node_list=*/;
   variable9 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(49)) /*Parser::go_to*/;
@@ -23971,16 +24051,16 @@ void parser___ReduceAction337___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction337___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction337___init, 12605};
+void parser___ReduceAction338___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12641, LOCATE_parser___ReduceAction338___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction337].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction337].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction338].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction338].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction338___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction338___action, 12609};
+void parser___ReduceAction339___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12645, LOCATE_parser___ReduceAction339___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -23994,7 +24074,7 @@ void parser___ReduceAction338___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tstartstringnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tstartstringnode2*/, COLOR_TStartString, ID_TStartString)) /*cast TStartString*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction338___action, 12614); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction339___action, LOCATE_parser, 12650); nit_exit(1);}
   variable5 = NEW_parser_prod___AStartStringExpr___init_astartstringexpr( variable3 /*tstartstringnode2*/); /*new AStartStringExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -24003,16 +24083,16 @@ void parser___ReduceAction338___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction338___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction338___init, 12621};
+void parser___ReduceAction339___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12657, LOCATE_parser___ReduceAction339___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction338].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction338].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction339].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction339].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction339___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction339___action, 12625};
+void parser___ReduceAction340___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12661, LOCATE_parser___ReduceAction340___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24034,21 +24114,21 @@ void parser___ReduceAction339___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable5 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction339___action, 12634); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction340___action, LOCATE_parser, 12670); nit_exit(1);}
   variable8 =  variable3 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction339___action, 12636); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable7 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable7 /*pexprnode1*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction340___action, LOCATE_parser, 12672); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable7 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable7 /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable6 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode3*/,  variable7 /*pexprnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable6 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode3*/,  variable7 /*pexprnode1*/) /*AbstractArray::add*/;
   }
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable8 /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable8 /*pexprnode2*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable8 /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable8 /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable6 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode3*/,  variable8 /*pexprnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable6 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode3*/,  variable8 /*pexprnode2*/) /*AbstractArray::add*/;
   }
   variable1 =  variable6 /*listnode3*/ /*node_list=*/;
   variable9 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(51)) /*Parser::go_to*/;
@@ -24056,16 +24136,16 @@ void parser___ReduceAction339___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction339___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction339___init, 12646};
+void parser___ReduceAction340___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12682, LOCATE_parser___ReduceAction340___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction339].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction339].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction340].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction340].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction340___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction340___action, 12650};
+void parser___ReduceAction341___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12686, LOCATE_parser___ReduceAction341___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24079,7 +24159,7 @@ void parser___ReduceAction340___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tmidstringnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tmidstringnode2*/, COLOR_TMidString, ID_TMidString)) /*cast TMidString*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction340___action, 12655); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction341___action, LOCATE_parser, 12691); nit_exit(1);}
   variable5 = NEW_parser_prod___AMidStringExpr___init_amidstringexpr( variable3 /*tmidstringnode2*/); /*new AMidStringExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -24088,16 +24168,16 @@ void parser___ReduceAction340___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction340___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction340___init, 12662};
+void parser___ReduceAction341___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12698, LOCATE_parser___ReduceAction341___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction340].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction340].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction341].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction341].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction341___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction341___action, 12666};
+void parser___ReduceAction342___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12702, LOCATE_parser___ReduceAction342___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24111,7 +24191,7 @@ void parser___ReduceAction341___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tendstringnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tendstringnode2*/, COLOR_TEndString, ID_TEndString)) /*cast TEndString*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction341___action, 12671); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction342___action, LOCATE_parser, 12707); nit_exit(1);}
   variable5 = NEW_parser_prod___AEndStringExpr___init_aendstringexpr( variable3 /*tendstringnode2*/); /*new AEndStringExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -24120,16 +24200,16 @@ void parser___ReduceAction341___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction341___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction341___init, 12678};
+void parser___ReduceAction342___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12714, LOCATE_parser___ReduceAction342___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction341].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction341].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction342].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction342].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction342___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction342___action, 12682};
+void parser___ReduceAction343___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12718, LOCATE_parser___ReduceAction343___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24153,14 +24233,14 @@ void parser___ReduceAction342___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable4 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction342___action, 12692); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable8 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable8 /*pexprnode1*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction343___action, LOCATE_parser, 12728); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable8 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable8 /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode2*/,  variable8 /*pexprnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode2*/,  variable8 /*pexprnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable7 /*listnode2*/ /*node_list=*/;
   variable9 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
@@ -24168,16 +24248,16 @@ void parser___ReduceAction342___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction342___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction342___init, 12699};
+void parser___ReduceAction343___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12735, LOCATE_parser___ReduceAction343___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction342].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction342].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction343].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction343].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction343___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction343___action, 12703};
+void parser___ReduceAction344___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12739, LOCATE_parser___ReduceAction344___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24205,25 +24285,25 @@ void parser___ReduceAction343___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable8 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable5 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable9 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction343___action, 12714); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction344___action, LOCATE_parser, 12750); nit_exit(1);}
   variable10 =  variable3 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*listnode2*/==NIT_NULL) || VAL_ISA( variable10 /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction343___action, 12716); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable9 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable9 /*pexprnode1*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction344___action, LOCATE_parser, 12752); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable9 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable9 /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode3*/,  variable9 /*pexprnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode3*/,  variable9 /*pexprnode1*/) /*AbstractArray::add*/;
   }
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode2*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode2*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode3*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable8 =  variable10 /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode3*/,  variable10 /*listnode2*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode3*/,  variable10 /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable1 =  variable8 /*listnode3*/ /*node_list=*/;
@@ -24232,16 +24312,16 @@ void parser___ReduceAction343___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction343___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction343___init, 12730};
+void parser___ReduceAction344___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12766, LOCATE_parser___ReduceAction344___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction343].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction343].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction344].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction344].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction344___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction344___action, 12734};
+void parser___ReduceAction345___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12770, LOCATE_parser___ReduceAction345___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24258,7 +24338,7 @@ void parser___ReduceAction344___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable1 =  variable5 /*listnode1*/ /*node_list=*/;
   variable6 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
@@ -24266,16 +24346,16 @@ void parser___ReduceAction344___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction344___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction344___init, 12744};
+void parser___ReduceAction345___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12780, LOCATE_parser___ReduceAction345___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction344].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction344].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction345].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction345].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction345___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction345___action, 12748};
+void parser___ReduceAction346___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12784, LOCATE_parser___ReduceAction346___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24283,7 +24363,7 @@ void parser___ReduceAction345___action(val_t  self, val_t  param0) {
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   variable1 =  NIT_NULL /*null*/;
-  variable3 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable3 = NEW_array___Array___init(); /*new Array[E]*/
   variable2 = variable3;
   variable1 =  variable2 /*listnode1*/ /*node_list=*/;
   variable3 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(54)) /*Parser::go_to*/;
@@ -24291,16 +24371,16 @@ void parser___ReduceAction345___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction345___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction345___init, 12755};
+void parser___ReduceAction346___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12791, LOCATE_parser___ReduceAction346___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction345].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction345].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction346].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction346].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction346___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction346___action, 12759};
+void parser___ReduceAction347___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12795, LOCATE_parser___ReduceAction347___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24324,14 +24404,14 @@ void parser___ReduceAction346___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable4 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction346___action, 12769); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable8 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable8 /*pexprnode1*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction347___action, LOCATE_parser, 12805); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable8 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable8 /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode2*/,  variable8 /*pexprnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode2*/,  variable8 /*pexprnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable7 /*listnode2*/ /*node_list=*/;
   variable9 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(55)) /*Parser::go_to*/;
@@ -24339,16 +24419,16 @@ void parser___ReduceAction346___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction346___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction346___init, 12776};
+void parser___ReduceAction347___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12812, LOCATE_parser___ReduceAction347___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction346].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction346].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction347].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction347].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction347___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction347___action, 12780};
+void parser___ReduceAction348___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12816, LOCATE_parser___ReduceAction348___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24376,25 +24456,25 @@ void parser___ReduceAction347___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable8 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable5 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable9 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction347___action, 12791); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction348___action, LOCATE_parser, 12827); nit_exit(1);}
   variable10 =  variable3 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*listnode2*/==NIT_NULL) || VAL_ISA( variable10 /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction347___action, 12793); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable9 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable9 /*pexprnode1*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction348___action, LOCATE_parser, 12829); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable9 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable9 /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode3*/,  variable9 /*pexprnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode3*/,  variable9 /*pexprnode1*/) /*AbstractArray::add*/;
   }
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode2*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode2*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode3*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable8 =  variable10 /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode3*/,  variable10 /*listnode2*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode3*/,  variable10 /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable1 =  variable8 /*listnode3*/ /*node_list=*/;
@@ -24403,16 +24483,16 @@ void parser___ReduceAction347___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction347___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction347___init, 12807};
+void parser___ReduceAction348___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12843, LOCATE_parser___ReduceAction348___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction347].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction347].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction348].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction348].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction348___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction348___action, 12811};
+void parser___ReduceAction349___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12847, LOCATE_parser___ReduceAction349___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24424,14 +24504,14 @@ void parser___ReduceAction348___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable4 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction348___action, 12817); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*pexprnode1*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction349___action, LOCATE_parser, 12853); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*pexprnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*pexprnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable3 /*listnode2*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(55)) /*Parser::go_to*/;
@@ -24439,16 +24519,16 @@ void parser___ReduceAction348___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction348___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction348___init, 12824};
+void parser___ReduceAction349___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12860, LOCATE_parser___ReduceAction349___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction348].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction348].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction349].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction349].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction349___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction349___action, 12828};
+void parser___ReduceAction350___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12864, LOCATE_parser___ReduceAction350___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24465,7 +24545,7 @@ void parser___ReduceAction349___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable1 =  variable5 /*listnode1*/ /*node_list=*/;
   variable6 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(55)) /*Parser::go_to*/;
@@ -24473,16 +24553,16 @@ void parser___ReduceAction349___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction349___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction349___init, 12838};
+void parser___ReduceAction350___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12874, LOCATE_parser___ReduceAction350___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction349].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction349].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction350].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction350].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction350___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction350___action, 12842};
+void parser___ReduceAction351___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12878, LOCATE_parser___ReduceAction351___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24490,7 +24570,7 @@ void parser___ReduceAction350___action(val_t  self, val_t  param0) {
   trace.prev = tracehead; tracehead = &trace;
   variable0 =  param0;
   variable1 =  NIT_NULL /*null*/;
-  variable3 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable3 = NEW_array___Array___init(); /*new Array[E]*/
   variable2 = variable3;
   variable1 =  variable2 /*listnode1*/ /*node_list=*/;
   variable3 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(55)) /*Parser::go_to*/;
@@ -24498,16 +24578,16 @@ void parser___ReduceAction350___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction350___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction350___init, 12849};
+void parser___ReduceAction351___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12885, LOCATE_parser___ReduceAction351___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction350].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction350].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction351].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction351].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction351___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction351___action, 12853};
+void parser___ReduceAction352___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12889, LOCATE_parser___ReduceAction352___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24531,14 +24611,14 @@ void parser___ReduceAction351___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable4 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction351___action, 12863); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable8 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable8 /*pexprnode1*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction352___action, LOCATE_parser, 12899); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable8 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable8 /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode2*/,  variable8 /*pexprnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode2*/,  variable8 /*pexprnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable7 /*listnode2*/ /*node_list=*/;
   variable9 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(56)) /*Parser::go_to*/;
@@ -24546,16 +24626,16 @@ void parser___ReduceAction351___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction351___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction351___init, 12870};
+void parser___ReduceAction352___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12906, LOCATE_parser___ReduceAction352___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction351].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction351].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction352].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction352].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction352___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction352___action, 12874};
+void parser___ReduceAction353___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12910, LOCATE_parser___ReduceAction353___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24583,25 +24663,25 @@ void parser___ReduceAction352___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable8 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable5 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable9 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction352___action, 12885); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction353___action, LOCATE_parser, 12921); nit_exit(1);}
   variable10 =  variable3 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*listnode2*/==NIT_NULL) || VAL_ISA( variable10 /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction352___action, 12887); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable9 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable9 /*pexprnode1*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction353___action, LOCATE_parser, 12923); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable9 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable9 /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode3*/,  variable9 /*pexprnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable8 /*listnode3*/,  variable9 /*pexprnode1*/) /*AbstractArray::add*/;
   }
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode2*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode2*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode3*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable8 =  variable10 /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode3*/,  variable10 /*listnode2*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode3*/,  variable10 /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable1 =  variable8 /*listnode3*/ /*node_list=*/;
@@ -24610,16 +24690,16 @@ void parser___ReduceAction352___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction352___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction352___init, 12901};
+void parser___ReduceAction353___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12937, LOCATE_parser___ReduceAction353___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction352].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction352].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction353].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction353].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction353___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction353___action, 12905};
+void parser___ReduceAction354___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12941, LOCATE_parser___ReduceAction354___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24641,23 +24721,23 @@ void parser___ReduceAction353___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist3*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction353___action, 12913); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction354___action, LOCATE_parser, 12949); nit_exit(1);}
   variable1 =  variable6 /*pexprnode1*/ /*node_list=*/;
   variable7 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(57)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable7,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction353___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction353___init, 12917};
+void parser___ReduceAction354___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12953, LOCATE_parser___ReduceAction354___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction353].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction353].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction354].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction354].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction354___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction354___action, 12921};
+void parser___ReduceAction355___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12957, LOCATE_parser___ReduceAction355___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24670,11 +24750,11 @@ void parser___ReduceAction354___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tclassidnode3*/==NIT_NULL) || VAL_ISA( variable4 /*tclassidnode3*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction354___action, 12927); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction355___action, LOCATE_parser, 12963); nit_exit(1);}
   variable6 = NEW_parser_prod___AQualified___init_aqualified( variable3 /*listnode2*/,  variable4 /*tclassidnode3*/); /*new AQualified*/
   variable5 = variable6;
   variable1 =  variable5 /*pqualifiednode1*/ /*node_list=*/;
@@ -24683,16 +24763,16 @@ void parser___ReduceAction354___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction354___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction354___init, 12935};
+void parser___ReduceAction355___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12971, LOCATE_parser___ReduceAction355___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction354].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction354].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction355].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction355].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction355___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction355___action, 12939};
+void parser___ReduceAction356___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12975, LOCATE_parser___ReduceAction356___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24709,23 +24789,23 @@ void parser___ReduceAction355___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode2*/==NIT_NULL) || VAL_ISA( variable5 /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction355___action, 12946); nit_exit(1);}
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode2*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode2*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction356___action, LOCATE_parser, 12982); nit_exit(1);}
+  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable6)) { /*if*/
-    variable6 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable6 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable6)) { /*if*/
       variable4 =  variable5 /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode2*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*tclassidnode4*/==NIT_NULL) || VAL_ISA( variable6 /*tclassidnode4*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction355___action, 12955); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction356___action, LOCATE_parser, 12991); nit_exit(1);}
   variable8 = NEW_parser_prod___AQualified___init_aqualified( variable4 /*listnode3*/,  variable6 /*tclassidnode4*/); /*new AQualified*/
   variable7 = variable8;
   variable1 =  variable7 /*pqualifiednode1*/ /*node_list=*/;
@@ -24734,16 +24814,16 @@ void parser___ReduceAction355___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction355___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction355___init, 12963};
+void parser___ReduceAction356___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 12999, LOCATE_parser___ReduceAction356___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction355].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction355].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction356].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction356].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction356___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction356___action, 12967};
+void parser___ReduceAction357___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13003, LOCATE_parser___ReduceAction357___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24756,18 +24836,18 @@ void parser___ReduceAction356___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*listnode2*/==NIT_NULL) || VAL_ISA( variable4 /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction356___action, 12973); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable4 /*listnode2*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable4 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable4 /*listnode2*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction357___action, LOCATE_parser, 13009); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable4 /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable4 /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    variable5 = ((array___AbstractArray___is_empty_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable3 /*listnode3*/) /*Array::is_empty*/;
+    variable5 = ((array___AbstractArray___is_empty_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable3 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable5)) { /*if*/
       variable3 =  variable4 /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable3 /*listnode3*/,  variable4 /*listnode2*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable3 /*listnode3*/,  variable4 /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable6 = NEW_parser_prod___AQualified___init_aqualified( variable3 /*listnode3*/,  NIT_NULL /*null*/); /*new AQualified*/
@@ -24778,16 +24858,16 @@ void parser___ReduceAction356___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction356___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction356___init, 12988};
+void parser___ReduceAction357___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13024, LOCATE_parser___ReduceAction357___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction356].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction356].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction357].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction357].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction357___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction357___action, 12992};
+void parser___ReduceAction358___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13028, LOCATE_parser___ReduceAction358___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24806,23 +24886,23 @@ void parser___ReduceAction357___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tidnode1*/==NIT_NULL) || VAL_ISA( variable5 /*tidnode1*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction357___action, 12999); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction358___action, LOCATE_parser, 13035); nit_exit(1);}
   variable1 =  variable5 /*tidnode1*/ /*node_list=*/;
   variable6 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(59)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable6,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction357___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction357___init, 13003};
+void parser___ReduceAction358___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13039, LOCATE_parser___ReduceAction358___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction357].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction357].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction358].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction358].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction358___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction358___action, 13007};
+void parser___ReduceAction359___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13043, LOCATE_parser___ReduceAction359___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24841,23 +24921,23 @@ void parser___ReduceAction358___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tclassidnode1*/==NIT_NULL) || VAL_ISA( variable5 /*tclassidnode1*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction358___action, 13014); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction359___action, LOCATE_parser, 13050); nit_exit(1);}
   variable1 =  variable5 /*tclassidnode1*/ /*node_list=*/;
   variable6 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(60)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable6,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction358___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction358___init, 13018};
+void parser___ReduceAction359___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13054, LOCATE_parser___ReduceAction359___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction358].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction358].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction359].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction359].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction359___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction359___action, 13022};
+void parser___ReduceAction360___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13058, LOCATE_parser___ReduceAction360___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24872,16 +24952,16 @@ void parser___ReduceAction359___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction359___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction359___init, 13028};
+void parser___ReduceAction360___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13064, LOCATE_parser___ReduceAction360___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction359].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction359].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction360].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction360].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction360___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction360___action, 13032};
+void parser___ReduceAction361___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13068, LOCATE_parser___ReduceAction361___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24896,16 +24976,16 @@ void parser___ReduceAction360___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction360___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction360___init, 13038};
+void parser___ReduceAction361___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13074, LOCATE_parser___ReduceAction361___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction360].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction360].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction361].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction361].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction361___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction361___action, 13042};
+void parser___ReduceAction362___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13078, LOCATE_parser___ReduceAction362___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24918,18 +24998,18 @@ void parser___ReduceAction361___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*listnode2*/==NIT_NULL) || VAL_ISA( variable4 /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction361___action, 13048); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable4 /*listnode2*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable4 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable4 /*listnode2*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction362___action, LOCATE_parser, 13084); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable4 /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable4 /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    variable5 = ((array___AbstractArray___is_empty_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable3 /*listnode3*/) /*Array::is_empty*/;
+    variable5 = ((array___AbstractArray___is_empty_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable3 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable5)) { /*if*/
       variable3 =  variable4 /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable3 /*listnode3*/,  variable4 /*listnode2*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable3 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable3 /*listnode3*/,  variable4 /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable6 = NEW_parser_prod___ADoc___init_adoc( variable3 /*listnode3*/); /*new ADoc*/
@@ -24940,16 +25020,16 @@ void parser___ReduceAction361___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction361___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction361___init, 13062};
+void parser___ReduceAction362___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13098, LOCATE_parser___ReduceAction362___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction361].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction361].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction362].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction362].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction362___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction362___action, 13066};
+void parser___ReduceAction363___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13102, LOCATE_parser___ReduceAction363___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -24965,18 +25045,18 @@ void parser___ReduceAction362___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable2 /*nodearraylist2*/;
   variable6 = TAG_Bool(( variable5 /*listnode2*/==NIT_NULL) || VAL_ISA( variable5 /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction362___action, 13073); nit_exit(1);}
-  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode2*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode2*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction363___action, LOCATE_parser, 13109); nit_exit(1);}
+  variable6 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable6)) { /*if*/
-    variable6 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable6 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable6)) { /*if*/
       variable4 =  variable5 /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode2*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable7 = NEW_parser_prod___ADoc___init_adoc( variable4 /*listnode3*/); /*new ADoc*/
@@ -24987,16 +25067,16 @@ void parser___ReduceAction362___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction362___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction362___init, 13087};
+void parser___ReduceAction363___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13123, LOCATE_parser___ReduceAction363___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction362].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction362].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction363].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction363].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction363___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction363___action, 13091};
+void parser___ReduceAction364___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13127, LOCATE_parser___ReduceAction364___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25012,16 +25092,16 @@ void parser___ReduceAction363___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction363___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction363___init, 13098};
+void parser___ReduceAction364___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13134, LOCATE_parser___ReduceAction364___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction363].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction363].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction364].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction364].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction364___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction364___action, 13102};
+void parser___ReduceAction365___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13138, LOCATE_parser___ReduceAction365___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25034,16 +25114,16 @@ void parser___ReduceAction364___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction364___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction364___init, 13108};
+void parser___ReduceAction365___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13144, LOCATE_parser___ReduceAction365___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction364].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction364].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction365].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction365].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction365___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction365___action, 13112};
+void parser___ReduceAction366___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13148, LOCATE_parser___ReduceAction366___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25056,23 +25136,23 @@ void parser___ReduceAction365___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pdocnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pdocnode1*/, COLOR_PDoc, ID_PDoc)) /*cast PDoc*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction365___action, 13117); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction366___action, LOCATE_parser, 13153); nit_exit(1);}
   variable1 =  variable3 /*pdocnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(63)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction365___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction365___init, 13121};
+void parser___ReduceAction366___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13157, LOCATE_parser___ReduceAction366___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction365].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction365].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction366].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction366].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction366___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction366___action, 13125};
+void parser___ReduceAction367___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13161, LOCATE_parser___ReduceAction367___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25090,16 +25170,16 @@ void parser___ReduceAction366___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction366___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction366___init, 13132};
+void parser___ReduceAction367___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13168, LOCATE_parser___ReduceAction367___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction366].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction366].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction367].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction367].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction367___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction367___action, 13136};
+void parser___ReduceAction368___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13172, LOCATE_parser___ReduceAction368___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25120,16 +25200,16 @@ void parser___ReduceAction367___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction367___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction367___init, 13144};
+void parser___ReduceAction368___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13180, LOCATE_parser___ReduceAction368___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction367].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction367].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction368].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction368].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction368___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction368___action, 13148};
+void parser___ReduceAction369___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13184, LOCATE_parser___ReduceAction369___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25144,16 +25224,16 @@ void parser___ReduceAction368___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction368___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction368___init, 13154};
+void parser___ReduceAction369___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13190, LOCATE_parser___ReduceAction369___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction368].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction368].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction369].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction369].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction369___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction369___action, 13158};
+void parser___ReduceAction370___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13194, LOCATE_parser___ReduceAction370___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25166,11 +25246,11 @@ void parser___ReduceAction369___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tclassidnode2*/==NIT_NULL) || VAL_ISA( variable4 /*tclassidnode2*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction369___action, 13164); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction370___action, LOCATE_parser, 13200); nit_exit(1);}
   variable6 = NEW_parser_prod___AType___init_atype( variable4 /*tclassidnode2*/,  variable3 /*listnode3*/); /*new AType*/
   variable5 = variable6;
   variable1 =  variable5 /*ptypenode1*/ /*node_list=*/;
@@ -25179,16 +25259,16 @@ void parser___ReduceAction369___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction369___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction369___init, 13172};
+void parser___ReduceAction370___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13208, LOCATE_parser___ReduceAction370___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction369].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction369].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction370].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction370].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction370___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction370___action, 13176};
+void parser___ReduceAction371___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13212, LOCATE_parser___ReduceAction371___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25201,23 +25281,23 @@ void parser___ReduceAction370___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction370___action, 13181); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction371___action, LOCATE_parser, 13217); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(66)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction370___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction370___init, 13185};
+void parser___ReduceAction371___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13221, LOCATE_parser___ReduceAction371___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction370].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction370].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction371].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction371].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction371___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction371___action, 13189};
+void parser___ReduceAction372___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13225, LOCATE_parser___ReduceAction372___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25266,22 +25346,22 @@ void parser___ReduceAction371___action(val_t  self, val_t  param0) {
   variable12 = variable13;
   variable13 =  variable12 /*nodearraylist1*/;
   variable14 = TAG_Bool(( variable13 /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable13 /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction371___action, 13204); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction372___action, LOCATE_parser, 13240); nit_exit(1);}
   variable14 =  variable10 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable14 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction371___action, 13206); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction372___action, LOCATE_parser, 13242); nit_exit(1);}
   variable15 =  variable8 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*tkwthennode4*/==NIT_NULL) || VAL_ISA( variable15 /*tkwthennode4*/, COLOR_TKwthen, ID_TKwthen)) /*cast TKwthen*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction371___action, 13208); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction372___action, LOCATE_parser, 13244); nit_exit(1);}
   variable16 =  variable6 /*nodearraylist7*/;
   variable17 = TAG_Bool(( variable16 /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable16 /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction371___action, 13210); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction372___action, LOCATE_parser, 13246); nit_exit(1);}
   variable17 =  variable4 /*nodearraylist9*/;
   variable18 = TAG_Bool(( variable17 /*tkwelsenode6*/==NIT_NULL) || VAL_ISA( variable17 /*tkwelsenode6*/, COLOR_TKwelse, ID_TKwelse)) /*cast TKwelse*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction371___action, 13212); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction372___action, LOCATE_parser, 13248); nit_exit(1);}
   variable18 =  variable2 /*nodearraylist11*/;
   variable19 = TAG_Bool(( variable18 /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable18 /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction371___action, 13214); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction372___action, LOCATE_parser, 13250); nit_exit(1);}
   variable20 = NEW_parser_prod___AIfexprExpr___init_aifexprexpr( variable13 /*tkwifnode2*/,  variable14 /*pexprnode3*/,  variable15 /*tkwthennode4*/,  variable16 /*pexprnode5*/,  variable17 /*tkwelsenode6*/,  variable18 /*pexprnode7*/); /*new AIfexprExpr*/
   variable19 = variable20;
   variable1 =  variable19 /*pexprnode1*/ /*node_list=*/;
@@ -25290,16 +25370,16 @@ void parser___ReduceAction371___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction371___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction371___init, 13226};
+void parser___ReduceAction372___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13262, LOCATE_parser___ReduceAction372___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction371].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction371].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction372].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction372].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction372___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction372___action, 13230};
+void parser___ReduceAction373___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13266, LOCATE_parser___ReduceAction373___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25312,23 +25392,23 @@ void parser___ReduceAction372___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction372___action, 13235); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction373___action, LOCATE_parser, 13271); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(67)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction372___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction372___init, 13239};
+void parser___ReduceAction373___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13275, LOCATE_parser___ReduceAction373___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction372].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction372].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction373].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction373].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction373___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction373___action, 13243};
+void parser___ReduceAction374___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13279, LOCATE_parser___ReduceAction374___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25352,10 +25432,10 @@ void parser___ReduceAction373___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction373___action, 13251); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction374___action, LOCATE_parser, 13287); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction373___action, 13253); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction374___action, LOCATE_parser, 13289); nit_exit(1);}
   variable9 = NEW_parser_prod___AOrExpr___init_aorexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AOrExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -25364,16 +25444,16 @@ void parser___ReduceAction373___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction373___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction373___init, 13261};
+void parser___ReduceAction374___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13297, LOCATE_parser___ReduceAction374___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction373].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction373].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction374].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction374].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction374___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction374___action, 13265};
+void parser___ReduceAction375___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13301, LOCATE_parser___ReduceAction375___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25397,10 +25477,10 @@ void parser___ReduceAction374___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction374___action, 13273); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction375___action, LOCATE_parser, 13309); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction374___action, 13275); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction375___action, LOCATE_parser, 13311); nit_exit(1);}
   variable9 = NEW_parser_prod___AAndExpr___init_aandexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AAndExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -25409,16 +25489,16 @@ void parser___ReduceAction374___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction374___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction374___init, 13283};
+void parser___ReduceAction375___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13319, LOCATE_parser___ReduceAction375___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction374].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction374].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction375].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction375].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction375___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction375___action, 13287};
+void parser___ReduceAction376___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13323, LOCATE_parser___ReduceAction376___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25431,23 +25511,23 @@ void parser___ReduceAction375___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction375___action, 13292); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction376___action, LOCATE_parser, 13328); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(68)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction375___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction375___init, 13296};
+void parser___ReduceAction376___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13332, LOCATE_parser___ReduceAction376___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction375].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction375].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction376].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction376].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction376___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction376___action, 13300};
+void parser___ReduceAction377___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13336, LOCATE_parser___ReduceAction377___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25468,10 +25548,10 @@ void parser___ReduceAction376___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tkwnotnode2*/==NIT_NULL) || VAL_ISA( variable5 /*tkwnotnode2*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction376___action, 13307); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction377___action, LOCATE_parser, 13343); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist3*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction376___action, 13309); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction377___action, LOCATE_parser, 13345); nit_exit(1);}
   variable8 = NEW_parser_prod___ANotExpr___init_anotexpr( variable5 /*tkwnotnode2*/,  variable6 /*pexprnode3*/); /*new ANotExpr*/
   variable7 = variable8;
   variable1 =  variable7 /*pexprnode1*/ /*node_list=*/;
@@ -25480,16 +25560,16 @@ void parser___ReduceAction376___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction376___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction376___init, 13317};
+void parser___ReduceAction377___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13353, LOCATE_parser___ReduceAction377___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction376].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction376].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction377].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction377].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction377___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction377___action, 13321};
+void parser___ReduceAction378___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13357, LOCATE_parser___ReduceAction378___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25502,23 +25582,23 @@ void parser___ReduceAction377___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction377___action, 13326); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction378___action, LOCATE_parser, 13362); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(69)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction377___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction377___init, 13330};
+void parser___ReduceAction378___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13366, LOCATE_parser___ReduceAction378___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction377].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction377].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction378].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction378].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction378___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction378___action, 13334};
+void parser___ReduceAction379___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13370, LOCATE_parser___ReduceAction379___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25542,10 +25622,10 @@ void parser___ReduceAction378___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction378___action, 13342); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction379___action, LOCATE_parser, 13378); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction378___action, 13344); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction379___action, LOCATE_parser, 13380); nit_exit(1);}
   variable9 = NEW_parser_prod___AEqExpr___init_aeqexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AEqExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -25554,16 +25634,16 @@ void parser___ReduceAction378___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction378___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction378___init, 13352};
+void parser___ReduceAction379___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13388, LOCATE_parser___ReduceAction379___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction378].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction378].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction379].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction379].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction379___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction379___action, 13356};
+void parser___ReduceAction380___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13392, LOCATE_parser___ReduceAction380___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25587,10 +25667,10 @@ void parser___ReduceAction379___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction379___action, 13364); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction380___action, LOCATE_parser, 13400); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction379___action, 13366); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction380___action, LOCATE_parser, 13402); nit_exit(1);}
   variable9 = NEW_parser_prod___AEeExpr___init_aeeexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AEeExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -25599,16 +25679,16 @@ void parser___ReduceAction379___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction379___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction379___init, 13374};
+void parser___ReduceAction380___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13410, LOCATE_parser___ReduceAction380___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction379].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction379].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction380].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction380].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction380___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction380___action, 13378};
+void parser___ReduceAction381___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13414, LOCATE_parser___ReduceAction381___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25632,10 +25712,10 @@ void parser___ReduceAction380___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction380___action, 13386); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction381___action, LOCATE_parser, 13422); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction380___action, 13388); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction381___action, LOCATE_parser, 13424); nit_exit(1);}
   variable9 = NEW_parser_prod___ANeExpr___init_aneexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new ANeExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -25644,16 +25724,16 @@ void parser___ReduceAction380___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction380___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction380___init, 13396};
+void parser___ReduceAction381___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13432, LOCATE_parser___ReduceAction381___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction380].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction380].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction381].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction381].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction381___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction381___action, 13400};
+void parser___ReduceAction382___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13436, LOCATE_parser___ReduceAction382___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25677,10 +25757,10 @@ void parser___ReduceAction381___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction381___action, 13408); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction382___action, LOCATE_parser, 13444); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction381___action, 13410); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction382___action, LOCATE_parser, 13446); nit_exit(1);}
   variable9 = NEW_parser_prod___ALtExpr___init_altexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new ALtExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -25689,16 +25769,16 @@ void parser___ReduceAction381___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction381___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction381___init, 13418};
+void parser___ReduceAction382___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13454, LOCATE_parser___ReduceAction382___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction381].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction381].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction382].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction382].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction382___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction382___action, 13422};
+void parser___ReduceAction383___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13458, LOCATE_parser___ReduceAction383___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25722,10 +25802,10 @@ void parser___ReduceAction382___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction382___action, 13430); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction383___action, LOCATE_parser, 13466); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction382___action, 13432); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction383___action, LOCATE_parser, 13468); nit_exit(1);}
   variable9 = NEW_parser_prod___ALeExpr___init_aleexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new ALeExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -25734,16 +25814,16 @@ void parser___ReduceAction382___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction382___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction382___init, 13440};
+void parser___ReduceAction383___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13476, LOCATE_parser___ReduceAction383___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction382].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction382].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction383].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction383].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction383___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction383___action, 13444};
+void parser___ReduceAction384___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13480, LOCATE_parser___ReduceAction384___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25767,10 +25847,10 @@ void parser___ReduceAction383___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction383___action, 13452); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction384___action, LOCATE_parser, 13488); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction383___action, 13454); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction384___action, LOCATE_parser, 13490); nit_exit(1);}
   variable9 = NEW_parser_prod___AGtExpr___init_agtexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AGtExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -25779,16 +25859,16 @@ void parser___ReduceAction383___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction383___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction383___init, 13462};
+void parser___ReduceAction384___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13498, LOCATE_parser___ReduceAction384___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction383].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction383].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction384].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction384].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction384___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction384___action, 13466};
+void parser___ReduceAction385___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13502, LOCATE_parser___ReduceAction385___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25812,10 +25892,10 @@ void parser___ReduceAction384___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction384___action, 13474); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction385___action, LOCATE_parser, 13510); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction384___action, 13476); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction385___action, LOCATE_parser, 13512); nit_exit(1);}
   variable9 = NEW_parser_prod___AGeExpr___init_ageexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AGeExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -25824,16 +25904,16 @@ void parser___ReduceAction384___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction384___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction384___init, 13484};
+void parser___ReduceAction385___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13520, LOCATE_parser___ReduceAction385___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction384].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction384].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction385].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction385].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction385___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction385___action, 13488};
+void parser___ReduceAction386___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13524, LOCATE_parser___ReduceAction386___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25857,10 +25937,10 @@ void parser___ReduceAction385___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction385___action, 13496); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction386___action, LOCATE_parser, 13532); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction385___action, 13498); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction386___action, LOCATE_parser, 13534); nit_exit(1);}
   variable9 = NEW_parser_prod___AStarshipExpr___init_astarshipexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AStarshipExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -25869,16 +25949,16 @@ void parser___ReduceAction385___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction385___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction385___init, 13506};
+void parser___ReduceAction386___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13542, LOCATE_parser___ReduceAction386___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction385].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction385].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction386].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction386].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction386___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction386___action, 13510};
+void parser___ReduceAction387___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13546, LOCATE_parser___ReduceAction387___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25902,10 +25982,10 @@ void parser___ReduceAction386___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction386___action, 13518); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction387___action, LOCATE_parser, 13554); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable7 /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction386___action, 13520); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction387___action, LOCATE_parser, 13556); nit_exit(1);}
   variable9 = NEW_parser_prod___AIsaExpr___init_aisaexpr( variable6 /*pexprnode2*/,  variable7 /*ptypenode3*/); /*new AIsaExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -25914,16 +25994,16 @@ void parser___ReduceAction386___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction386___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction386___init, 13528};
+void parser___ReduceAction387___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13564, LOCATE_parser___ReduceAction387___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction386].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction386].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction387].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction387].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction387___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction387___action, 13532};
+void parser___ReduceAction388___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13568, LOCATE_parser___ReduceAction388___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25936,23 +26016,23 @@ void parser___ReduceAction387___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction387___action, 13537); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction388___action, LOCATE_parser, 13573); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(70)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction387___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction387___init, 13541};
+void parser___ReduceAction388___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13577, LOCATE_parser___ReduceAction388___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction387].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction387].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction388].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction388].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction388___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction388___action, 13545};
+void parser___ReduceAction389___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13581, LOCATE_parser___ReduceAction389___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -25976,10 +26056,10 @@ void parser___ReduceAction388___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction388___action, 13553); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction389___action, LOCATE_parser, 13589); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction388___action, 13555); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction389___action, LOCATE_parser, 13591); nit_exit(1);}
   variable9 = NEW_parser_prod___APlusExpr___init_aplusexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new APlusExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -25988,16 +26068,16 @@ void parser___ReduceAction388___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction388___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction388___init, 13563};
+void parser___ReduceAction389___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13599, LOCATE_parser___ReduceAction389___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction388].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction388].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction389].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction389].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction389___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction389___action, 13567};
+void parser___ReduceAction390___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13603, LOCATE_parser___ReduceAction390___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26021,10 +26101,10 @@ void parser___ReduceAction389___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction389___action, 13575); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction390___action, LOCATE_parser, 13611); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction389___action, 13577); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction390___action, LOCATE_parser, 13613); nit_exit(1);}
   variable9 = NEW_parser_prod___AMinusExpr___init_aminusexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AMinusExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -26033,16 +26113,16 @@ void parser___ReduceAction389___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction389___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction389___init, 13585};
+void parser___ReduceAction390___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13621, LOCATE_parser___ReduceAction390___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction389].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction389].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction390].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction390].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction390___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction390___action, 13589};
+void parser___ReduceAction391___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13625, LOCATE_parser___ReduceAction391___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26055,23 +26135,23 @@ void parser___ReduceAction390___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction390___action, 13594); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction391___action, LOCATE_parser, 13630); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(71)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction390___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction390___init, 13598};
+void parser___ReduceAction391___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13634, LOCATE_parser___ReduceAction391___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction390].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction390].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction391].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction391].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction391___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction391___action, 13602};
+void parser___ReduceAction392___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13638, LOCATE_parser___ReduceAction392___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26095,10 +26175,10 @@ void parser___ReduceAction391___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction391___action, 13610); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction392___action, LOCATE_parser, 13646); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction391___action, 13612); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction392___action, LOCATE_parser, 13648); nit_exit(1);}
   variable9 = NEW_parser_prod___AStarExpr___init_astarexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AStarExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -26107,16 +26187,16 @@ void parser___ReduceAction391___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction391___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction391___init, 13620};
+void parser___ReduceAction392___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13656, LOCATE_parser___ReduceAction392___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction391].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction391].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction392].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction392].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction392___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction392___action, 13624};
+void parser___ReduceAction393___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13660, LOCATE_parser___ReduceAction393___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26140,10 +26220,10 @@ void parser___ReduceAction392___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction392___action, 13632); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction393___action, LOCATE_parser, 13668); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction392___action, 13634); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction393___action, LOCATE_parser, 13670); nit_exit(1);}
   variable9 = NEW_parser_prod___ASlashExpr___init_aslashexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new ASlashExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -26152,16 +26232,16 @@ void parser___ReduceAction392___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction392___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction392___init, 13642};
+void parser___ReduceAction393___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13678, LOCATE_parser___ReduceAction393___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction392].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction392].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction393].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction393].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction393___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction393___action, 13646};
+void parser___ReduceAction394___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13682, LOCATE_parser___ReduceAction394___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26185,10 +26265,10 @@ void parser___ReduceAction393___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction393___action, 13654); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction394___action, LOCATE_parser, 13690); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction393___action, 13656); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction394___action, LOCATE_parser, 13692); nit_exit(1);}
   variable9 = NEW_parser_prod___APercentExpr___init_apercentexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new APercentExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -26197,16 +26277,16 @@ void parser___ReduceAction393___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction393___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction393___init, 13664};
+void parser___ReduceAction394___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13700, LOCATE_parser___ReduceAction394___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction393].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction393].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction394].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction394].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction394___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction394___action, 13668};
+void parser___ReduceAction395___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13704, LOCATE_parser___ReduceAction395___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26219,23 +26299,23 @@ void parser___ReduceAction394___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction394___action, 13673); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction395___action, LOCATE_parser, 13709); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(72)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction394___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction394___init, 13677};
+void parser___ReduceAction395___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13713, LOCATE_parser___ReduceAction395___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction394].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction394].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction395].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction395].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction395___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction395___action, 13681};
+void parser___ReduceAction396___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13717, LOCATE_parser___ReduceAction396___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26256,10 +26336,10 @@ void parser___ReduceAction395___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tminusnode2*/==NIT_NULL) || VAL_ISA( variable5 /*tminusnode2*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction395___action, 13688); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction396___action, LOCATE_parser, 13724); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist3*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction395___action, 13690); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction396___action, LOCATE_parser, 13726); nit_exit(1);}
   variable8 = NEW_parser_prod___AUminusExpr___init_auminusexpr( variable5 /*tminusnode2*/,  variable6 /*pexprnode3*/); /*new AUminusExpr*/
   variable7 = variable8;
   variable1 =  variable7 /*pexprnode1*/ /*node_list=*/;
@@ -26268,16 +26348,16 @@ void parser___ReduceAction395___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction395___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction395___init, 13698};
+void parser___ReduceAction396___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13734, LOCATE_parser___ReduceAction396___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction395].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction395].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction396].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction396].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction396___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction396___action, 13702};
+void parser___ReduceAction397___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13738, LOCATE_parser___ReduceAction397___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26298,10 +26378,10 @@ void parser___ReduceAction396___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tkwoncenode2*/==NIT_NULL) || VAL_ISA( variable5 /*tkwoncenode2*/, COLOR_TKwonce, ID_TKwonce)) /*cast TKwonce*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction396___action, 13709); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction397___action, LOCATE_parser, 13745); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist3*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction396___action, 13711); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction397___action, LOCATE_parser, 13747); nit_exit(1);}
   variable8 = NEW_parser_prod___AOnceExpr___init_aonceexpr( variable5 /*tkwoncenode2*/,  variable6 /*pexprnode3*/); /*new AOnceExpr*/
   variable7 = variable8;
   variable1 =  variable7 /*pexprnode1*/ /*node_list=*/;
@@ -26310,16 +26390,16 @@ void parser___ReduceAction396___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction396___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction396___init, 13719};
+void parser___ReduceAction397___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13755, LOCATE_parser___ReduceAction397___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction396].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction396].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction397].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction397].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction397___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction397___action, 13723};
+void parser___ReduceAction398___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13759, LOCATE_parser___ReduceAction398___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26332,23 +26412,23 @@ void parser___ReduceAction397___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction397___action, 13728); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction398___action, LOCATE_parser, 13764); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(73)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction397___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction397___init, 13732};
+void parser___ReduceAction398___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13768, LOCATE_parser___ReduceAction398___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction397].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction397].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction398].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction398].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction398___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction398___action, 13736};
+void parser___ReduceAction399___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13772, LOCATE_parser___ReduceAction399___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26372,24 +26452,24 @@ void parser___ReduceAction398___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable5 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*tkwnewnode2*/==NIT_NULL) || VAL_ISA( variable7 /*tkwnewnode2*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction398___action, 13745); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction399___action, LOCATE_parser, 13781); nit_exit(1);}
   variable8 =  variable3 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable8 /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction398___action, 13747); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction399___action, LOCATE_parser, 13783); nit_exit(1);}
   variable9 =  variable2 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*listnode5*/==NIT_NULL) || VAL_ISA( variable9 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction398___action, 13749); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction399___action, LOCATE_parser, 13785); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode6*/) /*Array::is_empty*/;
+    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable10)) { /*if*/
       variable6 =  variable9 /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode6*/,  variable9 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode6*/,  variable9 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable11 = NEW_parser_prod___ANewExpr___init_anewexpr( variable7 /*tkwnewnode2*/,  variable8 /*ptypenode3*/,  NIT_NULL /*null*/,  variable6 /*listnode6*/); /*new ANewExpr*/
@@ -26400,16 +26480,16 @@ void parser___ReduceAction398___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction398___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction398___init, 13766};
+void parser___ReduceAction399___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13802, LOCATE_parser___ReduceAction399___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction398].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction398].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction399].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction399].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction399___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction399___action, 13770};
+void parser___ReduceAction400___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13806, LOCATE_parser___ReduceAction400___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26433,10 +26513,10 @@ void parser___ReduceAction399___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction399___action, 13778); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction400___action, LOCATE_parser, 13814); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable7 /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction399___action, 13780); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction400___action, LOCATE_parser, 13816); nit_exit(1);}
   variable9 = NEW_parser_prod___AAttrExpr___init_aattrexpr( variable6 /*pexprnode2*/,  variable7 /*tattridnode3*/); /*new AAttrExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -26445,16 +26525,16 @@ void parser___ReduceAction399___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction399___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction399___init, 13788};
+void parser___ReduceAction400___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13824, LOCATE_parser___ReduceAction400___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction399].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction399].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction400].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction400].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction400___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction400___action, 13792};
+void parser___ReduceAction401___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13828, LOCATE_parser___ReduceAction401___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26471,7 +26551,7 @@ void parser___ReduceAction400___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable4 /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction400___action, 13799); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction401___action, LOCATE_parser, 13835); nit_exit(1);}
   variable6 = NEW_parser_prod___AAttrExpr___init_aattrexpr( variable3 /*pexprnode2*/,  variable4 /*tattridnode3*/); /*new AAttrExpr*/
   variable5 = variable6;
   variable1 =  variable5 /*pexprnode1*/ /*node_list=*/;
@@ -26480,16 +26560,16 @@ void parser___ReduceAction400___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction400___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction400___init, 13807};
+void parser___ReduceAction401___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13843, LOCATE_parser___ReduceAction401___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction400].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction400].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction401].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction401].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction401___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction401___action, 13811};
+void parser___ReduceAction402___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13847, LOCATE_parser___ReduceAction402___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26516,24 +26596,24 @@ void parser___ReduceAction401___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable6 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction401___action, 13821); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction402___action, LOCATE_parser, 13857); nit_exit(1);}
   variable9 =  variable3 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable9 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction401___action, 13823); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction402___action, LOCATE_parser, 13859); nit_exit(1);}
   variable10 =  variable2 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*listnode4*/==NIT_NULL) || VAL_ISA( variable10 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction401___action, 13825); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction402___action, LOCATE_parser, 13861); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable7 =  variable10 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable12 = NEW_parser_prod___ACallExpr___init_acallexpr( variable8 /*pexprnode2*/,  variable9 /*tidnode3*/,  variable7 /*listnode5*/); /*new ACallExpr*/
@@ -26544,16 +26624,16 @@ void parser___ReduceAction401___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction401___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction401___init, 13841};
+void parser___ReduceAction402___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13877, LOCATE_parser___ReduceAction402___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction401].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction401].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction402].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction402].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction402___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction402___action, 13845};
+void parser___ReduceAction403___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13881, LOCATE_parser___ReduceAction403___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26571,23 +26651,23 @@ void parser___ReduceAction402___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable6 = NEW_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable6 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction402___action, 13854); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction403___action, LOCATE_parser, 13890); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*listnode4*/==NIT_NULL) || VAL_ISA( variable7 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction402___action, 13856); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction403___action, LOCATE_parser, 13892); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*Array::is_empty*/;
+    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable8)) { /*if*/
       variable4 =  variable7 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable9 = NEW_parser_prod___ACallExpr___init_acallexpr( variable5 /*pexprnode2*/,  variable6 /*tidnode3*/,  variable4 /*listnode5*/); /*new ACallExpr*/
@@ -26598,16 +26678,16 @@ void parser___ReduceAction402___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction402___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction402___init, 13872};
+void parser___ReduceAction403___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13908, LOCATE_parser___ReduceAction403___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction402].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction402].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction403].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction403].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction403___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction403___action, 13876};
+void parser___ReduceAction404___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13912, LOCATE_parser___ReduceAction404___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26624,21 +26704,21 @@ void parser___ReduceAction403___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable5 /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction403___action, 13883); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction404___action, LOCATE_parser, 13919); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*listnode4*/==NIT_NULL) || VAL_ISA( variable6 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction403___action, 13885); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction404___action, LOCATE_parser, 13921); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable6 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable6 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable6 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable8 = NEW_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable5 /*tkwsupernode3*/,  variable4 /*listnode5*/); /*new ASuperExpr*/
@@ -26649,16 +26729,16 @@ void parser___ReduceAction403___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction403___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction403___init, 13901};
+void parser___ReduceAction404___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13937, LOCATE_parser___ReduceAction404___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction403].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction403].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction404].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction404].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction404___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction404___action, 13905};
+void parser___ReduceAction405___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13941, LOCATE_parser___ReduceAction405___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26679,24 +26759,24 @@ void parser___ReduceAction404___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable6 =  variable4 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pqualifiednode2*/==NIT_NULL) || VAL_ISA( variable6 /*pqualifiednode2*/, COLOR_PQualified, ID_PQualified)) /*cast PQualified*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction404___action, 13913); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction405___action, LOCATE_parser, 13949); nit_exit(1);}
   variable7 =  variable3 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable7 /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction404___action, 13915); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction405___action, LOCATE_parser, 13951); nit_exit(1);}
   variable8 =  variable2 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*listnode4*/==NIT_NULL) || VAL_ISA( variable8 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction404___action, 13917); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction405___action, LOCATE_parser, 13953); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable5 =  variable8 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable8 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable8 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable10 = NEW_parser_prod___ASuperExpr___init_asuperexpr( variable6 /*pqualifiednode2*/,  variable7 /*tkwsupernode3*/,  variable5 /*listnode5*/); /*new ASuperExpr*/
@@ -26707,16 +26787,16 @@ void parser___ReduceAction404___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction404___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction404___init, 13933};
+void parser___ReduceAction405___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13969, LOCATE_parser___ReduceAction405___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction404].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction404].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction405].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction405].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction405___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction405___action, 13937};
+void parser___ReduceAction406___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 13973, LOCATE_parser___ReduceAction406___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26743,24 +26823,24 @@ void parser___ReduceAction405___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable6 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction405___action, 13947); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction406___action, LOCATE_parser, 13983); nit_exit(1);}
   variable9 =  variable3 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable9 /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction405___action, 13949); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction406___action, LOCATE_parser, 13985); nit_exit(1);}
   variable10 =  variable2 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*listnode4*/==NIT_NULL) || VAL_ISA( variable10 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction405___action, 13951); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction406___action, LOCATE_parser, 13987); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable7 =  variable10 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable12 = NEW_parser_prod___AInitExpr___init_ainitexpr( variable8 /*pexprnode2*/,  variable9 /*tkwinitnode3*/,  variable7 /*listnode5*/); /*new AInitExpr*/
@@ -26771,16 +26851,16 @@ void parser___ReduceAction405___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction405___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction405___init, 13967};
+void parser___ReduceAction406___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14003, LOCATE_parser___ReduceAction406___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction405].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction405].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction406].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction406].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction406___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction406___action, 13971};
+void parser___ReduceAction407___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14007, LOCATE_parser___ReduceAction407___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26798,23 +26878,23 @@ void parser___ReduceAction406___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable6 = NEW_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable6 /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction406___action, 13980); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction407___action, LOCATE_parser, 14016); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*listnode4*/==NIT_NULL) || VAL_ISA( variable7 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction406___action, 13982); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction407___action, LOCATE_parser, 14018); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*Array::is_empty*/;
+    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable8)) { /*if*/
       variable4 =  variable7 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable9 = NEW_parser_prod___AInitExpr___init_ainitexpr( variable5 /*pexprnode2*/,  variable6 /*tkwinitnode3*/,  variable4 /*listnode5*/); /*new AInitExpr*/
@@ -26825,16 +26905,16 @@ void parser___ReduceAction406___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction406___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction406___init, 13998};
+void parser___ReduceAction407___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14034, LOCATE_parser___ReduceAction407___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction406].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction406].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction407].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction407].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction407___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction407___action, 14002};
+void parser___ReduceAction408___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14038, LOCATE_parser___ReduceAction408___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26868,27 +26948,27 @@ void parser___ReduceAction407___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable9 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable8 = variable9;
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
   variable10 =  variable8 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*tkwnewnode2*/==NIT_NULL) || VAL_ISA( variable10 /*tkwnewnode2*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction407___action, 14014); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction408___action, LOCATE_parser, 14050); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable11 /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction407___action, 14016); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction408___action, LOCATE_parser, 14052); nit_exit(1);}
   variable12 =  variable3 /*nodearraylist6*/;
   variable13 = TAG_Bool(( variable12 /*tidnode4*/==NIT_NULL) || VAL_ISA( variable12 /*tidnode4*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction407___action, 14018); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction408___action, LOCATE_parser, 14054); nit_exit(1);}
   variable13 =  variable2 /*nodearraylist7*/;
   variable14 = TAG_Bool(( variable13 /*listnode5*/==NIT_NULL) || VAL_ISA( variable13 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction407___action, 14020); nit_exit(1);}
-  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable13 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction408___action, LOCATE_parser, 14056); nit_exit(1);}
+  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable14)) { /*if*/
-    variable14 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode6*/) /*Array::is_empty*/;
+    variable14 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable14)) { /*if*/
       variable9 =  variable13 /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode6*/,  variable13 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode6*/,  variable13 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable15 = NEW_parser_prod___ANewExpr___init_anewexpr( variable10 /*tkwnewnode2*/,  variable11 /*ptypenode3*/,  variable12 /*tidnode4*/,  variable9 /*listnode6*/); /*new ANewExpr*/
@@ -26899,40 +26979,8 @@ void parser___ReduceAction407___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction407___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction407___init, 14037};
-  trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction407].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction407].i] = 1;
-  tracehead = trace.prev;
-  return;
-}
-void parser___ReduceAction408___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction408___action, 14041};
-  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 =  NIT_NULL /*null*/;
-  variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
-  variable2 = variable3;
-  variable3 =  variable2 /*nodearraylist1*/;
-  variable4 = TAG_Bool(( variable3 /*tkwselfnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwselfnode2*/, COLOR_TKwself, ID_TKwself)) /*cast TKwself*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction408___action, 14046); nit_exit(1);}
-  variable5 = NEW_parser_prod___ASelfExpr___init_aselfexpr( variable3 /*tkwselfnode2*/); /*new ASelfExpr*/
-  variable4 = variable5;
-  variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
-  variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable5,  variable1 /*node_list*/) /*Parser::push*/;
-  tracehead = trace.prev;
-  return;
-}
 void parser___ReduceAction408___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction408___init, 14053};
+  struct trace_t trace = {NULL, LOCATE_parser, 14073, LOCATE_parser___ReduceAction408___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction408].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction408].i] = 1;
@@ -26940,7 +26988,7 @@ void parser___ReduceAction408___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction409___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction409___action, 14057};
+  struct trace_t trace = {NULL, LOCATE_parser, 14077, LOCATE_parser___ReduceAction409___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26953,9 +27001,9 @@ void parser___ReduceAction409___action(val_t  self, val_t  param0) {
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
-  variable4 = TAG_Bool(( variable3 /*tkwtruenode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwtruenode2*/, COLOR_TKwtrue, ID_TKwtrue)) /*cast TKwtrue*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction409___action, 14062); nit_exit(1);}
-  variable5 = NEW_parser_prod___ATrueExpr___init_atrueexpr( variable3 /*tkwtruenode2*/); /*new ATrueExpr*/
+  variable4 = TAG_Bool(( variable3 /*tkwselfnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwselfnode2*/, COLOR_TKwself, ID_TKwself)) /*cast TKwself*/;
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction409___action, LOCATE_parser, 14082); nit_exit(1);}
+  variable5 = NEW_parser_prod___ASelfExpr___init_aselfexpr( variable3 /*tkwselfnode2*/); /*new ASelfExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
@@ -26964,7 +27012,7 @@ void parser___ReduceAction409___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction409___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction409___init, 14069};
+  struct trace_t trace = {NULL, LOCATE_parser, 14089, LOCATE_parser___ReduceAction409___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction409].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction409].i] = 1;
@@ -26972,7 +27020,7 @@ void parser___ReduceAction409___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction410___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction410___action, 14073};
+  struct trace_t trace = {NULL, LOCATE_parser, 14093, LOCATE_parser___ReduceAction410___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -26985,9 +27033,9 @@ void parser___ReduceAction410___action(val_t  self, val_t  param0) {
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
-  variable4 = TAG_Bool(( variable3 /*tkwfalsenode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwfalsenode2*/, COLOR_TKwfalse, ID_TKwfalse)) /*cast TKwfalse*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction410___action, 14078); nit_exit(1);}
-  variable5 = NEW_parser_prod___AFalseExpr___init_afalseexpr( variable3 /*tkwfalsenode2*/); /*new AFalseExpr*/
+  variable4 = TAG_Bool(( variable3 /*tkwtruenode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwtruenode2*/, COLOR_TKwtrue, ID_TKwtrue)) /*cast TKwtrue*/;
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction410___action, LOCATE_parser, 14098); nit_exit(1);}
+  variable5 = NEW_parser_prod___ATrueExpr___init_atrueexpr( variable3 /*tkwtruenode2*/); /*new ATrueExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
@@ -26996,7 +27044,7 @@ void parser___ReduceAction410___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction410___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction410___init, 14085};
+  struct trace_t trace = {NULL, LOCATE_parser, 14105, LOCATE_parser___ReduceAction410___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction410].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction410].i] = 1;
@@ -27004,7 +27052,7 @@ void parser___ReduceAction410___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction411___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction411___action, 14089};
+  struct trace_t trace = {NULL, LOCATE_parser, 14109, LOCATE_parser___ReduceAction411___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27017,9 +27065,9 @@ void parser___ReduceAction411___action(val_t  self, val_t  param0) {
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
-  variable4 = TAG_Bool(( variable3 /*tkwnullnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwnullnode2*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction411___action, 14094); nit_exit(1);}
-  variable5 = NEW_parser_prod___ANullExpr___init_anullexpr( variable3 /*tkwnullnode2*/); /*new ANullExpr*/
+  variable4 = TAG_Bool(( variable3 /*tkwfalsenode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwfalsenode2*/, COLOR_TKwfalse, ID_TKwfalse)) /*cast TKwfalse*/;
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction411___action, LOCATE_parser, 14114); nit_exit(1);}
+  variable5 = NEW_parser_prod___AFalseExpr___init_afalseexpr( variable3 /*tkwfalsenode2*/); /*new AFalseExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
@@ -27028,7 +27076,7 @@ void parser___ReduceAction411___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction411___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction411___init, 14101};
+  struct trace_t trace = {NULL, LOCATE_parser, 14121, LOCATE_parser___ReduceAction411___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction411].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction411].i] = 1;
@@ -27036,7 +27084,7 @@ void parser___ReduceAction411___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction412___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction412___action, 14105};
+  struct trace_t trace = {NULL, LOCATE_parser, 14125, LOCATE_parser___ReduceAction412___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27049,9 +27097,9 @@ void parser___ReduceAction412___action(val_t  self, val_t  param0) {
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
-  variable4 = TAG_Bool(( variable3 /*tnumbernode2*/==NIT_NULL) || VAL_ISA( variable3 /*tnumbernode2*/, COLOR_TNumber, ID_TNumber)) /*cast TNumber*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction412___action, 14110); nit_exit(1);}
-  variable5 = NEW_parser_prod___AIntExpr___init_aintexpr( variable3 /*tnumbernode2*/); /*new AIntExpr*/
+  variable4 = TAG_Bool(( variable3 /*tkwnullnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwnullnode2*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction412___action, LOCATE_parser, 14130); nit_exit(1);}
+  variable5 = NEW_parser_prod___ANullExpr___init_anullexpr( variable3 /*tkwnullnode2*/); /*new ANullExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
@@ -27060,7 +27108,7 @@ void parser___ReduceAction412___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction412___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction412___init, 14117};
+  struct trace_t trace = {NULL, LOCATE_parser, 14137, LOCATE_parser___ReduceAction412___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction412].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction412].i] = 1;
@@ -27068,7 +27116,7 @@ void parser___ReduceAction412___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction413___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction413___action, 14121};
+  struct trace_t trace = {NULL, LOCATE_parser, 14141, LOCATE_parser___ReduceAction413___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27081,9 +27129,9 @@ void parser___ReduceAction413___action(val_t  self, val_t  param0) {
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
-  variable4 = TAG_Bool(( variable3 /*tfloatnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tfloatnode2*/, COLOR_TFloat, ID_TFloat)) /*cast TFloat*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction413___action, 14126); nit_exit(1);}
-  variable5 = NEW_parser_prod___AFloatExpr___init_afloatexpr( variable3 /*tfloatnode2*/); /*new AFloatExpr*/
+  variable4 = TAG_Bool(( variable3 /*tnumbernode2*/==NIT_NULL) || VAL_ISA( variable3 /*tnumbernode2*/, COLOR_TNumber, ID_TNumber)) /*cast TNumber*/;
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction413___action, LOCATE_parser, 14146); nit_exit(1);}
+  variable5 = NEW_parser_prod___AIntExpr___init_aintexpr( variable3 /*tnumbernode2*/); /*new AIntExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
@@ -27092,7 +27140,7 @@ void parser___ReduceAction413___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction413___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction413___init, 14133};
+  struct trace_t trace = {NULL, LOCATE_parser, 14153, LOCATE_parser___ReduceAction413___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction413].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction413].i] = 1;
@@ -27100,7 +27148,7 @@ void parser___ReduceAction413___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction414___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction414___action, 14137};
+  struct trace_t trace = {NULL, LOCATE_parser, 14157, LOCATE_parser___ReduceAction414___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27113,9 +27161,9 @@ void parser___ReduceAction414___action(val_t  self, val_t  param0) {
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
-  variable4 = TAG_Bool(( variable3 /*tcharnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tcharnode2*/, COLOR_TChar, ID_TChar)) /*cast TChar*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction414___action, 14142); nit_exit(1);}
-  variable5 = NEW_parser_prod___ACharExpr___init_acharexpr( variable3 /*tcharnode2*/); /*new ACharExpr*/
+  variable4 = TAG_Bool(( variable3 /*tfloatnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tfloatnode2*/, COLOR_TFloat, ID_TFloat)) /*cast TFloat*/;
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction414___action, LOCATE_parser, 14162); nit_exit(1);}
+  variable5 = NEW_parser_prod___AFloatExpr___init_afloatexpr( variable3 /*tfloatnode2*/); /*new AFloatExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
@@ -27124,7 +27172,7 @@ void parser___ReduceAction414___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction414___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction414___init, 14149};
+  struct trace_t trace = {NULL, LOCATE_parser, 14169, LOCATE_parser___ReduceAction414___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction414].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction414].i] = 1;
@@ -27132,7 +27180,7 @@ void parser___ReduceAction414___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction415___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction415___action, 14153};
+  struct trace_t trace = {NULL, LOCATE_parser, 14173, LOCATE_parser___ReduceAction415___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27145,9 +27193,9 @@ void parser___ReduceAction415___action(val_t  self, val_t  param0) {
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
-  variable4 = TAG_Bool(( variable3 /*tstringnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tstringnode2*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction415___action, 14158); nit_exit(1);}
-  variable5 = NEW_parser_prod___AStringExpr___init_astringexpr( variable3 /*tstringnode2*/); /*new AStringExpr*/
+  variable4 = TAG_Bool(( variable3 /*tcharnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tcharnode2*/, COLOR_TChar, ID_TChar)) /*cast TChar*/;
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction415___action, LOCATE_parser, 14178); nit_exit(1);}
+  variable5 = NEW_parser_prod___ACharExpr___init_acharexpr( variable3 /*tcharnode2*/); /*new ACharExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
@@ -27156,7 +27204,7 @@ void parser___ReduceAction415___action(val_t  self, val_t  param0) {
   return;
 }
 void parser___ReduceAction415___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction415___init, 14165};
+  struct trace_t trace = {NULL, LOCATE_parser, 14185, LOCATE_parser___ReduceAction415___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction415].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction415].i] = 1;
@@ -27164,28 +27212,31 @@ void parser___ReduceAction415___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction416___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction416___action, 14169};
+  struct trace_t trace = {NULL, LOCATE_parser, 14189, LOCATE_parser___ReduceAction416___action};
   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 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
-  variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction416___action, 14174); nit_exit(1);}
-  variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
-  variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
+  variable4 = TAG_Bool(( variable3 /*tstringnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tstringnode2*/, COLOR_TString, ID_TString)) /*cast TString*/;
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction416___action, LOCATE_parser, 14194); nit_exit(1);}
+  variable5 = NEW_parser_prod___AStringExpr___init_astringexpr( variable3 /*tstringnode2*/); /*new AStringExpr*/
+  variable4 = variable5;
+  variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
+  variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
+  ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable5,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
 void parser___ReduceAction416___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction416___init, 14178};
+  struct trace_t trace = {NULL, LOCATE_parser, 14201, LOCATE_parser___ReduceAction416___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction416].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction416].i] = 1;
@@ -27193,34 +27244,28 @@ void parser___ReduceAction416___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction417___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction417___action, 14182};
+  struct trace_t trace = {NULL, LOCATE_parser, 14205, LOCATE_parser___ReduceAction417___action};
   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 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
-  variable3 = variable4;
-  variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
-  variable4 = variable5;
-  variable5 =  variable3 /*nodearraylist2*/;
-  variable6 = TAG_Bool(( variable5 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable5 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction417___action, 14189); nit_exit(1);}
-  variable1 =  variable5 /*pexprnode1*/ /*node_list=*/;
-  variable6 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable6,  variable1 /*node_list*/) /*Parser::push*/;
+  variable3 =  variable2 /*nodearraylist1*/;
+  variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction417___action, LOCATE_parser, 14210); nit_exit(1);}
+  variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
+  variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
+  ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
 void parser___ReduceAction417___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction417___init, 14193};
+  struct trace_t trace = {NULL, LOCATE_parser, 14214, LOCATE_parser___ReduceAction417___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction417].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction417].i] = 1;
@@ -27228,28 +27273,34 @@ void parser___ReduceAction417___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction418___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction418___action, 14197};
+  struct trace_t trace = {NULL, LOCATE_parser, 14218, LOCATE_parser___ReduceAction418___action};
   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 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable3 =  variable2 /*nodearraylist1*/;
-  variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction418___action, 14202); nit_exit(1);}
-  variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
-  variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(75)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
+  variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable3 = variable4;
+  variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable4 = variable5;
+  variable5 =  variable3 /*nodearraylist2*/;
+  variable6 = TAG_Bool(( variable5 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable5 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction418___action, LOCATE_parser, 14225); nit_exit(1);}
+  variable1 =  variable5 /*pexprnode1*/ /*node_list=*/;
+  variable6 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
+  ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable6,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
 void parser___ReduceAction418___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction418___init, 14206};
+  struct trace_t trace = {NULL, LOCATE_parser, 14229, LOCATE_parser___ReduceAction418___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction418].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction418].i] = 1;
@@ -27257,7 +27308,7 @@ void parser___ReduceAction418___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction419___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction419___action, 14210};
+  struct trace_t trace = {NULL, LOCATE_parser, 14233, LOCATE_parser___ReduceAction419___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27268,6 +27319,13 @@ void parser___ReduceAction419___action(val_t  self, val_t  param0) {
   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 =  NIT_NULL /*null*/;
@@ -27279,25 +27337,37 @@ void parser___ReduceAction419___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable7 =  variable4 /*nodearraylist2*/;
-  variable8 = TAG_Bool(( variable7 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction419___action, 14219); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable7 /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable7 /*pexprnode2*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
-  if (UNTAG_Bool(variable8)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable6 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode3*/,  variable7 /*pexprnode2*/) /*Array::add*/;
-  }
-  variable9 = NEW_parser_prod___ABlockExpr___init_ablockexpr( variable6 /*listnode3*/); /*new ABlockExpr*/
+  variable8 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable7 = variable8;
+  variable9 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable8 = variable9;
-  variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
-  variable9 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(75)) /*Parser::go_to*/;
-  ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable9,  variable1 /*node_list*/) /*Parser::push*/;
+  variable10 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable9 = variable10;
+  variable11 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable10 = variable11;
+  variable12 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable11 = variable12;
+  variable12 =  variable11 /*nodearraylist1*/;
+  variable13 = TAG_Bool(( variable12 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction419___action, LOCATE_parser, 14247); nit_exit(1);}
+  variable13 =  variable8 /*nodearraylist4*/;
+  variable14 = TAG_Bool(( variable13 /*tkwasnode3*/==NIT_NULL) || VAL_ISA( variable13 /*tkwasnode3*/, COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction419___action, LOCATE_parser, 14249); nit_exit(1);}
+  variable14 =  variable4 /*nodearraylist8*/;
+  variable15 = TAG_Bool(( variable14 /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable14 /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction419___action, LOCATE_parser, 14251); nit_exit(1);}
+  variable16 = NEW_parser_prod___AAsCastExpr___init_aascastexpr( variable12 /*pexprnode2*/,  variable13 /*tkwasnode3*/,  variable14 /*ptypenode4*/); /*new AAsCastExpr*/
+  variable15 = variable16;
+  variable1 =  variable15 /*pexprnode1*/ /*node_list=*/;
+  variable16 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(74)) /*Parser::go_to*/;
+  ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable16,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
 void parser___ReduceAction419___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction419___init, 14229};
+  struct trace_t trace = {NULL, LOCATE_parser, 14260, LOCATE_parser___ReduceAction419___init};
   trace.prev = tracehead; tracehead = &trace;
   if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction419].i]) return;
   init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction419].i] = 1;
@@ -27305,25 +27375,102 @@ void parser___ReduceAction419___init(val_t  self, int* init_table) {
   return;
 }
 void parser___ReduceAction420___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction420___action, 14233};
+  struct trace_t trace = {NULL, LOCATE_parser, 14264, LOCATE_parser___ReduceAction420___action};
   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 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable3 =  variable2 /*nodearraylist1*/;
+  variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction420___action, LOCATE_parser, 14269); nit_exit(1);}
+  variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
+  variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(75)) /*Parser::go_to*/;
+  ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
+  tracehead = trace.prev;
+  return;
+}
+void parser___ReduceAction420___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14273, LOCATE_parser___ReduceAction420___init};
+  trace.prev = tracehead; tracehead = &trace;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction420].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction420].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser___ReduceAction421___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14277, LOCATE_parser___ReduceAction421___action};
+  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 =  NIT_NULL /*null*/;
+  variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable2 = variable3;
+  variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable3 = variable4;
+  variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable4 = variable5;
+  variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable5 = variable6;
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
+  variable6 = variable7;
+  variable7 =  variable4 /*nodearraylist2*/;
+  variable8 = TAG_Bool(( variable7 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction421___action, LOCATE_parser, 14286); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable7 /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable7 /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
+  if (UNTAG_Bool(variable8)) { /*if*/
+    ((array___AbstractArray___add_t)CALL( variable6 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable6 /*listnode3*/,  variable7 /*pexprnode2*/) /*AbstractArray::add*/;
+  }
+  variable9 = NEW_parser_prod___ABlockExpr___init_ablockexpr( variable6 /*listnode3*/); /*new ABlockExpr*/
+  variable8 = variable9;
+  variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
+  variable9 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(75)) /*Parser::go_to*/;
+  ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable9,  variable1 /*node_list*/) /*Parser::push*/;
+  tracehead = trace.prev;
+  return;
+}
+void parser___ReduceAction421___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14296, LOCATE_parser___ReduceAction421___init};
+  trace.prev = tracehead; tracehead = &trace;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction421].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction421].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser___ReduceAction422___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14300, LOCATE_parser___ReduceAction422___action};
+  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 =  NIT_NULL /*null*/;
+  variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable2 = variable3;
+  variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
@@ -27331,25 +27478,25 @@ void parser___ReduceAction420___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable5 /*nodearraylist2*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction420___action, 14243); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction422___action, LOCATE_parser, 14310); nit_exit(1);}
   variable9 =  variable4 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*listnode3*/==NIT_NULL) || VAL_ISA( variable9 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction420___action, 14245); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable8 /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable8 /*pexprnode2*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction422___action, LOCATE_parser, 14312); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable8 /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable8 /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode4*/,  variable8 /*pexprnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___SimpleCollection___add))( variable7 /*listnode4*/,  variable8 /*pexprnode2*/) /*AbstractArray::add*/;
   }
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode4*/) /*Array::is_empty*/;
+    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable10)) { /*if*/
       variable7 =  variable9 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode4*/,  variable9 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode4*/,  variable9 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable11 = NEW_parser_prod___ABlockExpr___init_ablockexpr( variable7 /*listnode4*/); /*new ABlockExpr*/
@@ -27360,16 +27507,16 @@ void parser___ReduceAction420___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction420___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction420___init, 14262};
+void parser___ReduceAction422___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14329, LOCATE_parser___ReduceAction422___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction420].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction420].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction422].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction422].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction421___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction421___action, 14266};
+void parser___ReduceAction423___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14333, LOCATE_parser___ReduceAction423___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27388,16 +27535,16 @@ void parser___ReduceAction421___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction421___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction421___init, 14274};
+void parser___ReduceAction423___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14341, LOCATE_parser___ReduceAction423___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction421].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction421].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction423].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction423].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction422___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction422___action, 14278};
+void parser___ReduceAction424___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14345, LOCATE_parser___ReduceAction424___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27413,16 +27560,16 @@ void parser___ReduceAction422___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction422___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction422___init, 14285};
+void parser___ReduceAction424___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14352, LOCATE_parser___ReduceAction424___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction422].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction422].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction424].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction424].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction423___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction423___action, 14289};
+void parser___ReduceAction425___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14356, LOCATE_parser___ReduceAction425___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27435,23 +27582,23 @@ void parser___ReduceAction423___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction423___action, 14294); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction425___action, LOCATE_parser, 14361); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction423___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction423___init, 14298};
+void parser___ReduceAction425___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14365, LOCATE_parser___ReduceAction425___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction423].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction423].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction425].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction425].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction424___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction424___action, 14302};
+void parser___ReduceAction426___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14369, LOCATE_parser___ReduceAction426___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27464,23 +27611,23 @@ void parser___ReduceAction424___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction424___action, 14307); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction426___action, LOCATE_parser, 14374); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction424___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction424___init, 14311};
+void parser___ReduceAction426___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14378, LOCATE_parser___ReduceAction426___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction424].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction424].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction426].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction426].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction425___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction425___action, 14315};
+void parser___ReduceAction427___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14382, LOCATE_parser___ReduceAction427___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27494,7 +27641,7 @@ void parser___ReduceAction425___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwreturnnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwreturnnode2*/, COLOR_TKwreturn, ID_TKwreturn)) /*cast TKwreturn*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction425___action, 14320); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction427___action, LOCATE_parser, 14387); nit_exit(1);}
   variable5 = NEW_parser_prod___AReturnExpr___init_areturnexpr( variable3 /*tkwreturnnode2*/,  NIT_NULL /*null*/); /*new AReturnExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -27503,16 +27650,16 @@ void parser___ReduceAction425___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction425___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction425___init, 14328};
+void parser___ReduceAction427___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14395, LOCATE_parser___ReduceAction427___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction425].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction425].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction427].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction427].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction426___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction426___action, 14332};
+void parser___ReduceAction428___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14399, LOCATE_parser___ReduceAction428___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27530,10 +27677,10 @@ void parser___ReduceAction426___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tkwreturnnode2*/==NIT_NULL) || VAL_ISA( variable4 /*tkwreturnnode2*/, COLOR_TKwreturn, ID_TKwreturn)) /*cast TKwreturn*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction426___action, 14338); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction428___action, LOCATE_parser, 14405); nit_exit(1);}
   variable5 =  variable2 /*nodearraylist2*/;
   variable6 = TAG_Bool(( variable5 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable5 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction426___action, 14340); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction428___action, LOCATE_parser, 14407); nit_exit(1);}
   variable7 = NEW_parser_prod___AReturnExpr___init_areturnexpr( variable4 /*tkwreturnnode2*/,  variable5 /*pexprnode3*/); /*new AReturnExpr*/
   variable6 = variable7;
   variable1 =  variable6 /*pexprnode1*/ /*node_list=*/;
@@ -27542,16 +27689,16 @@ void parser___ReduceAction426___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction426___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction426___init, 14348};
+void parser___ReduceAction428___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14415, LOCATE_parser___ReduceAction428___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction426].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction426].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction428].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction428].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction427___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction427___action, 14352};
+void parser___ReduceAction429___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14419, LOCATE_parser___ReduceAction429___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27565,7 +27712,7 @@ void parser___ReduceAction427___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwbreaknode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwbreaknode2*/, COLOR_TKwbreak, ID_TKwbreak)) /*cast TKwbreak*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction427___action, 14357); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction429___action, LOCATE_parser, 14424); nit_exit(1);}
   variable5 = NEW_parser_prod___ABreakExpr___init_abreakexpr( variable3 /*tkwbreaknode2*/); /*new ABreakExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -27574,16 +27721,16 @@ void parser___ReduceAction427___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction427___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction427___init, 14364};
+void parser___ReduceAction429___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14431, LOCATE_parser___ReduceAction429___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction427].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction427].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction429].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction429].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction428___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction428___action, 14368};
+void parser___ReduceAction430___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14435, LOCATE_parser___ReduceAction430___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27597,7 +27744,7 @@ void parser___ReduceAction428___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwabortnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwabortnode2*/, COLOR_TKwabort, ID_TKwabort)) /*cast TKwabort*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction428___action, 14373); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction430___action, LOCATE_parser, 14440); nit_exit(1);}
   variable5 = NEW_parser_prod___AAbortExpr___init_aabortexpr( variable3 /*tkwabortnode2*/); /*new AAbortExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -27606,16 +27753,16 @@ void parser___ReduceAction428___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction428___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction428___init, 14380};
+void parser___ReduceAction430___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14447, LOCATE_parser___ReduceAction430___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction428].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction428].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction430].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction430].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction429___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction429___action, 14384};
+void parser___ReduceAction431___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14451, LOCATE_parser___ReduceAction431___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27629,7 +27776,7 @@ void parser___ReduceAction429___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwcontinuenode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwcontinuenode2*/, COLOR_TKwcontinue, ID_TKwcontinue)) /*cast TKwcontinue*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction429___action, 14389); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction431___action, LOCATE_parser, 14456); nit_exit(1);}
   variable5 = NEW_parser_prod___AContinueExpr___init_acontinueexpr( variable3 /*tkwcontinuenode2*/); /*new AContinueExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -27638,16 +27785,16 @@ void parser___ReduceAction429___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction429___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction429___init, 14396};
+void parser___ReduceAction431___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14463, LOCATE_parser___ReduceAction431___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction429].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction429].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction431].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction431].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction430___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction430___action, 14400};
+void parser___ReduceAction432___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14467, LOCATE_parser___ReduceAction432___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27660,23 +27807,23 @@ void parser___ReduceAction430___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction430___action, 14405); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction432___action, LOCATE_parser, 14472); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction430___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction430___init, 14409};
+void parser___ReduceAction432___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14476, LOCATE_parser___ReduceAction432___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction430].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction430].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction432].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction432].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction431___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction431___action, 14413};
+void parser___ReduceAction433___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14480, LOCATE_parser___ReduceAction433___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27689,23 +27836,23 @@ void parser___ReduceAction431___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction431___action, 14418); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction433___action, LOCATE_parser, 14485); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction431___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction431___init, 14422};
+void parser___ReduceAction433___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14489, LOCATE_parser___ReduceAction433___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction431].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction431].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction433].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction433].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction432___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction432___action, 14426};
+void parser___ReduceAction434___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14493, LOCATE_parser___ReduceAction434___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27718,23 +27865,23 @@ void parser___ReduceAction432___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction432___action, 14431); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction434___action, LOCATE_parser, 14498); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction432___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction432___init, 14435};
+void parser___ReduceAction434___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14502, LOCATE_parser___ReduceAction434___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction432].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction432].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction434].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction434].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction433___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction433___action, 14439};
+void parser___ReduceAction435___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14506, LOCATE_parser___ReduceAction435___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27747,23 +27894,23 @@ void parser___ReduceAction433___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction433___action, 14444); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction435___action, LOCATE_parser, 14511); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction433___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction433___init, 14448};
+void parser___ReduceAction435___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14515, LOCATE_parser___ReduceAction435___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction433].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction433].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction435].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction435].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction434___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction434___action, 14452};
+void parser___ReduceAction436___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14519, LOCATE_parser___ReduceAction436___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27776,23 +27923,23 @@ void parser___ReduceAction434___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction434___action, 14457); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction436___action, LOCATE_parser, 14524); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(76)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction434___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction434___init, 14461};
+void parser___ReduceAction436___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14528, LOCATE_parser___ReduceAction436___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction434].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction434].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction436].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction436].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction435___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction435___action, 14465};
+void parser___ReduceAction437___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14532, LOCATE_parser___ReduceAction437___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27819,24 +27966,24 @@ void parser___ReduceAction435___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable6 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction435___action, 14475); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction437___action, LOCATE_parser, 14542); nit_exit(1);}
   variable9 =  variable3 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable9 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction435___action, 14477); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction437___action, LOCATE_parser, 14544); nit_exit(1);}
   variable10 =  variable2 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*listnode4*/==NIT_NULL) || VAL_ISA( variable10 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction435___action, 14479); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction437___action, LOCATE_parser, 14546); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable7 =  variable10 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable12 = NEW_parser_prod___ACallExpr___init_acallexpr( variable8 /*pexprnode2*/,  variable9 /*tidnode3*/,  variable7 /*listnode5*/); /*new ACallExpr*/
@@ -27847,16 +27994,16 @@ void parser___ReduceAction435___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction435___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction435___init, 14495};
+void parser___ReduceAction437___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14562, LOCATE_parser___ReduceAction437___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction435].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction435].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction437].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction437].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction436___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction436___action, 14499};
+void parser___ReduceAction438___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14566, LOCATE_parser___ReduceAction438___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27874,23 +28021,23 @@ void parser___ReduceAction436___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable6 = NEW_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable6 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction436___action, 14508); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction438___action, LOCATE_parser, 14575); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*listnode4*/==NIT_NULL) || VAL_ISA( variable7 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction436___action, 14510); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction438___action, LOCATE_parser, 14577); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*Array::is_empty*/;
+    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable8)) { /*if*/
       variable4 =  variable7 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable9 = NEW_parser_prod___ACallExpr___init_acallexpr( variable5 /*pexprnode2*/,  variable6 /*tidnode3*/,  variable4 /*listnode5*/); /*new ACallExpr*/
@@ -27901,16 +28048,16 @@ void parser___ReduceAction436___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction436___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction436___init, 14526};
+void parser___ReduceAction438___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14593, LOCATE_parser___ReduceAction438___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction436].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction436].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction438].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction438].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction437___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction437___action, 14530};
+void parser___ReduceAction439___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14597, LOCATE_parser___ReduceAction439___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27927,21 +28074,21 @@ void parser___ReduceAction437___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable5 /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction437___action, 14537); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction439___action, LOCATE_parser, 14604); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*listnode4*/==NIT_NULL) || VAL_ISA( variable6 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction437___action, 14539); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction439___action, LOCATE_parser, 14606); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable6 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable6 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable6 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable8 = NEW_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable5 /*tkwsupernode3*/,  variable4 /*listnode5*/); /*new ASuperExpr*/
@@ -27952,16 +28099,16 @@ void parser___ReduceAction437___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction437___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction437___init, 14555};
+void parser___ReduceAction439___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14622, LOCATE_parser___ReduceAction439___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction437].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction437].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction439].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction439].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction438___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction438___action, 14559};
+void parser___ReduceAction440___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14626, LOCATE_parser___ReduceAction440___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -27982,24 +28129,24 @@ void parser___ReduceAction438___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable6 =  variable4 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pqualifiednode2*/==NIT_NULL) || VAL_ISA( variable6 /*pqualifiednode2*/, COLOR_PQualified, ID_PQualified)) /*cast PQualified*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction438___action, 14567); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction440___action, LOCATE_parser, 14634); nit_exit(1);}
   variable7 =  variable3 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable7 /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction438___action, 14569); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction440___action, LOCATE_parser, 14636); nit_exit(1);}
   variable8 =  variable2 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*listnode4*/==NIT_NULL) || VAL_ISA( variable8 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction438___action, 14571); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction440___action, LOCATE_parser, 14638); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable5 =  variable8 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable8 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable8 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable10 = NEW_parser_prod___ASuperExpr___init_asuperexpr( variable6 /*pqualifiednode2*/,  variable7 /*tkwsupernode3*/,  variable5 /*listnode5*/); /*new ASuperExpr*/
@@ -28010,16 +28157,16 @@ void parser___ReduceAction438___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction438___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction438___init, 14587};
+void parser___ReduceAction440___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14654, LOCATE_parser___ReduceAction440___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction438].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction438].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction440].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction440].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction439___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction439___action, 14591};
+void parser___ReduceAction441___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14658, LOCATE_parser___ReduceAction441___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28046,24 +28193,24 @@ void parser___ReduceAction439___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable6 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction439___action, 14601); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction441___action, LOCATE_parser, 14668); nit_exit(1);}
   variable9 =  variable3 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable9 /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction439___action, 14603); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction441___action, LOCATE_parser, 14670); nit_exit(1);}
   variable10 =  variable2 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*listnode4*/==NIT_NULL) || VAL_ISA( variable10 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction439___action, 14605); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction441___action, LOCATE_parser, 14672); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable7 =  variable10 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable12 = NEW_parser_prod___AInitExpr___init_ainitexpr( variable8 /*pexprnode2*/,  variable9 /*tkwinitnode3*/,  variable7 /*listnode5*/); /*new AInitExpr*/
@@ -28074,16 +28221,16 @@ void parser___ReduceAction439___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction439___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction439___init, 14621};
+void parser___ReduceAction441___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14688, LOCATE_parser___ReduceAction441___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction439].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction439].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction441].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction441].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction440___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction440___action, 14625};
+void parser___ReduceAction442___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14692, LOCATE_parser___ReduceAction442___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28101,23 +28248,23 @@ void parser___ReduceAction440___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable6 = NEW_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable6 /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction440___action, 14634); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction442___action, LOCATE_parser, 14701); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*listnode4*/==NIT_NULL) || VAL_ISA( variable7 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction440___action, 14636); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction442___action, LOCATE_parser, 14703); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*Array::is_empty*/;
+    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable8)) { /*if*/
       variable4 =  variable7 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable9 = NEW_parser_prod___AInitExpr___init_ainitexpr( variable5 /*pexprnode2*/,  variable6 /*tkwinitnode3*/,  variable4 /*listnode5*/); /*new AInitExpr*/
@@ -28128,16 +28275,16 @@ void parser___ReduceAction440___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction440___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction440___init, 14652};
+void parser___ReduceAction442___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14719, LOCATE_parser___ReduceAction442___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction440].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction440].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction442].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction442].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction441___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction441___action, 14656};
+void parser___ReduceAction443___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14723, LOCATE_parser___ReduceAction443___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28155,10 +28302,10 @@ void parser___ReduceAction441___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tkwdonode2*/==NIT_NULL) || VAL_ISA( variable4 /*tkwdonode2*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction441___action, 14662); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction443___action, LOCATE_parser, 14729); nit_exit(1);}
   variable5 =  variable2 /*nodearraylist2*/;
   variable6 = TAG_Bool(( variable5 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable5 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction441___action, 14664); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction443___action, LOCATE_parser, 14731); nit_exit(1);}
   variable7 = NEW_parser_prod___ADoExpr___init_adoexpr( variable4 /*tkwdonode2*/,  variable5 /*pexprnode3*/); /*new ADoExpr*/
   variable6 = variable7;
   variable1 =  variable6 /*pexprnode1*/ /*node_list=*/;
@@ -28167,16 +28314,16 @@ void parser___ReduceAction441___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction441___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction441___init, 14672};
+void parser___ReduceAction443___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14739, LOCATE_parser___ReduceAction443___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction441].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction441].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction443].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction443].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction442___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction442___action, 14676};
+void parser___ReduceAction444___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14743, LOCATE_parser___ReduceAction444___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28214,16 +28361,16 @@ void parser___ReduceAction442___action(val_t  self, val_t  param0) {
   variable9 = variable10;
   variable10 =  variable9 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable10 /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction442___action, 14688); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction444___action, LOCATE_parser, 14755); nit_exit(1);}
   variable11 =  variable7 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable11 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction442___action, 14690); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction444___action, LOCATE_parser, 14757); nit_exit(1);}
   variable12 =  variable4 /*nodearraylist6*/;
   variable13 = TAG_Bool(( variable12 /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable12 /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction442___action, 14692); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction444___action, LOCATE_parser, 14759); nit_exit(1);}
   variable13 =  variable2 /*nodearraylist8*/;
   variable14 = TAG_Bool(( variable13 /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable13 /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction442___action, 14694); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction444___action, LOCATE_parser, 14761); nit_exit(1);}
   variable15 = NEW_parser_prod___AIfExpr___init_aifexpr( variable10 /*tkwifnode2*/,  variable11 /*pexprnode3*/,  variable12 /*pexprnode4*/,  variable13 /*pexprnode5*/); /*new AIfExpr*/
   variable14 = variable15;
   variable1 =  variable14 /*pexprnode1*/ /*node_list=*/;
@@ -28232,16 +28379,16 @@ void parser___ReduceAction442___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction442___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction442___init, 14704};
+void parser___ReduceAction444___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14771, LOCATE_parser___ReduceAction444___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction442].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction442].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction444].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction444].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction443___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction443___action, 14708};
+void parser___ReduceAction445___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14775, LOCATE_parser___ReduceAction445___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28273,16 +28420,16 @@ void parser___ReduceAction443___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable8 =  variable7 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*tkwwhilenode2*/==NIT_NULL) || VAL_ISA( variable8 /*tkwwhilenode2*/, COLOR_TKwwhile, ID_TKwwhile)) /*cast TKwwhile*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction443___action, 14718); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction445___action, LOCATE_parser, 14785); nit_exit(1);}
   variable9 =  variable5 /*nodearraylist3*/;
   variable10 = TAG_Bool(( variable9 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable9 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction443___action, 14720); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction445___action, LOCATE_parser, 14787); nit_exit(1);}
   variable10 =  variable3 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*tkwdonode4*/==NIT_NULL) || VAL_ISA( variable10 /*tkwdonode4*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction443___action, 14722); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction445___action, LOCATE_parser, 14789); nit_exit(1);}
   variable11 =  variable2 /*nodearraylist6*/;
   variable12 = TAG_Bool(( variable11 /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable11 /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction443___action, 14724); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction445___action, LOCATE_parser, 14791); nit_exit(1);}
   variable13 = NEW_parser_prod___AWhileExpr___init_awhileexpr( variable8 /*tkwwhilenode2*/,  variable9 /*pexprnode3*/,  variable10 /*tkwdonode4*/,  variable11 /*pexprnode5*/); /*new AWhileExpr*/
   variable12 = variable13;
   variable1 =  variable12 /*pexprnode1*/ /*node_list=*/;
@@ -28291,16 +28438,16 @@ void parser___ReduceAction443___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction443___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction443___init, 14734};
+void parser___ReduceAction445___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14801, LOCATE_parser___ReduceAction445___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction443].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction443].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction445].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction445].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction444___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction444___action, 14738};
+void parser___ReduceAction446___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14805, LOCATE_parser___ReduceAction446___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28325,13 +28472,13 @@ void parser___ReduceAction444___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction444___action, 14746); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction446___action, LOCATE_parser, 14813); nit_exit(1);}
   variable7 =  variable3 /*nodearraylist3*/;
   variable8 = TAG_Bool(( variable7 /*tkwdonode3*/==NIT_NULL) || VAL_ISA( variable7 /*tkwdonode3*/, COLOR_TKwdo, ID_TKwdo)) /*cast TKwdo*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction444___action, 14748); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction446___action, LOCATE_parser, 14815); nit_exit(1);}
   variable8 =  variable2 /*nodearraylist4*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode4*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode4*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction444___action, 14750); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction446___action, LOCATE_parser, 14817); nit_exit(1);}
   variable10 = NEW_parser_prod___AForExpr___init_aforexpr( variable6 /*pexprnode2*/,  variable7 /*tkwdonode3*/,  variable8 /*pexprnode4*/); /*new AForExpr*/
   variable9 = variable10;
   variable1 =  variable9 /*pexprnode1*/ /*node_list=*/;
@@ -28340,16 +28487,16 @@ void parser___ReduceAction444___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction444___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction444___init, 14759};
+void parser___ReduceAction446___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14826, LOCATE_parser___ReduceAction446___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction444].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction444].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction446].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction446].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction445___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction445___action, 14763};
+void parser___ReduceAction447___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14830, LOCATE_parser___ReduceAction447___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28362,11 +28509,11 @@ void parser___ReduceAction445___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tclassidnode2*/==NIT_NULL) || VAL_ISA( variable4 /*tclassidnode2*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction445___action, 14769); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction447___action, LOCATE_parser, 14836); nit_exit(1);}
   variable6 = NEW_parser_prod___AType___init_atype( variable4 /*tclassidnode2*/,  variable3 /*listnode3*/); /*new AType*/
   variable5 = variable6;
   variable1 =  variable5 /*ptypenode1*/ /*node_list=*/;
@@ -28375,16 +28522,16 @@ void parser___ReduceAction445___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction445___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction445___init, 14777};
+void parser___ReduceAction447___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14844, LOCATE_parser___ReduceAction447___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction445].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction445].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction447].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction447].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction446___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction446___action, 14781};
+void parser___ReduceAction448___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14848, LOCATE_parser___ReduceAction448___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28413,21 +28560,21 @@ void parser___ReduceAction446___action(val_t  self, val_t  param0) {
   variable6 = variable7;
   variable8 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable7 = variable8;
-  variable9 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable9 = NEW_array___Array___init(); /*new Array[E]*/
   variable8 = variable9;
   variable9 =  variable7 /*nodearraylist1*/;
   variable10 = TAG_Bool(( variable9 /*tclassidnode2*/==NIT_NULL) || VAL_ISA( variable9 /*tclassidnode2*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction446___action, 14792); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction448___action, LOCATE_parser, 14859); nit_exit(1);}
   variable10 =  variable4 /*nodearraylist4*/;
   variable11 = TAG_Bool(( variable10 /*listnode3*/==NIT_NULL) || VAL_ISA( variable10 /*listnode3*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction446___action, 14794); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode3*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode3*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction448___action, LOCATE_parser, 14861); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode3*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode3*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode3*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode3*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode3*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode4*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___Collection___is_empty))( variable8 /*listnode4*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable8 =  variable10 /*listnode3*/ /*listnode4=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode4*/,  variable10 /*listnode3*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable8 /*listnode4*/,COLOR_abstract_collection___IndexedCollection___append))( variable8 /*listnode4*/,  variable10 /*listnode3*/) /*IndexedCollection::append*/;
     }
   }
   variable12 = NEW_parser_prod___AType___init_atype( variable9 /*tclassidnode2*/,  variable8 /*listnode4*/); /*new AType*/
@@ -28438,16 +28585,16 @@ void parser___ReduceAction446___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction446___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction446___init, 14809};
+void parser___ReduceAction448___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14876, LOCATE_parser___ReduceAction448___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction446].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction446].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction448].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction448].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction447___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction447___action, 14813};
+void parser___ReduceAction449___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14880, LOCATE_parser___ReduceAction449___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28460,23 +28607,23 @@ void parser___ReduceAction447___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction447___action, 14818); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction449___action, LOCATE_parser, 14885); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(82)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction447___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction447___init, 14822};
+void parser___ReduceAction449___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14889, LOCATE_parser___ReduceAction449___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction447].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction447].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction449].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction449].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction448___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction448___action, 14826};
+void parser___ReduceAction450___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14893, LOCATE_parser___ReduceAction450___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28525,22 +28672,22 @@ void parser___ReduceAction448___action(val_t  self, val_t  param0) {
   variable12 = variable13;
   variable13 =  variable12 /*nodearraylist1*/;
   variable14 = TAG_Bool(( variable13 /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable13 /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction448___action, 14841); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction450___action, LOCATE_parser, 14908); nit_exit(1);}
   variable14 =  variable10 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable14 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction448___action, 14843); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction450___action, LOCATE_parser, 14910); nit_exit(1);}
   variable15 =  variable8 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*tkwthennode4*/==NIT_NULL) || VAL_ISA( variable15 /*tkwthennode4*/, COLOR_TKwthen, ID_TKwthen)) /*cast TKwthen*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction448___action, 14845); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction450___action, LOCATE_parser, 14912); nit_exit(1);}
   variable16 =  variable6 /*nodearraylist7*/;
   variable17 = TAG_Bool(( variable16 /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable16 /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction448___action, 14847); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction450___action, LOCATE_parser, 14914); nit_exit(1);}
   variable17 =  variable4 /*nodearraylist9*/;
   variable18 = TAG_Bool(( variable17 /*tkwelsenode6*/==NIT_NULL) || VAL_ISA( variable17 /*tkwelsenode6*/, COLOR_TKwelse, ID_TKwelse)) /*cast TKwelse*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction448___action, 14849); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction450___action, LOCATE_parser, 14916); nit_exit(1);}
   variable18 =  variable2 /*nodearraylist11*/;
   variable19 = TAG_Bool(( variable18 /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable18 /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction448___action, 14851); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction450___action, LOCATE_parser, 14918); nit_exit(1);}
   variable20 = NEW_parser_prod___AIfexprExpr___init_aifexprexpr( variable13 /*tkwifnode2*/,  variable14 /*pexprnode3*/,  variable15 /*tkwthennode4*/,  variable16 /*pexprnode5*/,  variable17 /*tkwelsenode6*/,  variable18 /*pexprnode7*/); /*new AIfexprExpr*/
   variable19 = variable20;
   variable1 =  variable19 /*pexprnode1*/ /*node_list=*/;
@@ -28549,16 +28696,16 @@ void parser___ReduceAction448___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction448___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction448___init, 14863};
+void parser___ReduceAction450___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14930, LOCATE_parser___ReduceAction450___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction448].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction448].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction450].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction450].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction449___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction449___action, 14867};
+void parser___ReduceAction451___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14934, LOCATE_parser___ReduceAction451___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28571,23 +28718,23 @@ void parser___ReduceAction449___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction449___action, 14872); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction451___action, LOCATE_parser, 14939); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(83)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction449___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction449___init, 14876};
+void parser___ReduceAction451___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14943, LOCATE_parser___ReduceAction451___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction449].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction449].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction451].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction451].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction450___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction450___action, 14880};
+void parser___ReduceAction452___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14947, LOCATE_parser___ReduceAction452___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28611,10 +28758,10 @@ void parser___ReduceAction450___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction450___action, 14888); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction452___action, LOCATE_parser, 14955); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction450___action, 14890); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction452___action, LOCATE_parser, 14957); nit_exit(1);}
   variable9 = NEW_parser_prod___AOrExpr___init_aorexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AOrExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -28623,16 +28770,16 @@ void parser___ReduceAction450___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction450___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction450___init, 14898};
+void parser___ReduceAction452___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14965, LOCATE_parser___ReduceAction452___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction450].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction450].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction452].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction452].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction451___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction451___action, 14902};
+void parser___ReduceAction453___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14969, LOCATE_parser___ReduceAction453___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28656,10 +28803,10 @@ void parser___ReduceAction451___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction451___action, 14910); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction453___action, LOCATE_parser, 14977); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction451___action, 14912); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction453___action, LOCATE_parser, 14979); nit_exit(1);}
   variable9 = NEW_parser_prod___AAndExpr___init_aandexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AAndExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -28668,16 +28815,16 @@ void parser___ReduceAction451___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction451___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction451___init, 14920};
+void parser___ReduceAction453___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14987, LOCATE_parser___ReduceAction453___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction451].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction451].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction453].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction453].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction452___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction452___action, 14924};
+void parser___ReduceAction454___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 14991, LOCATE_parser___ReduceAction454___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28690,23 +28837,23 @@ void parser___ReduceAction452___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction452___action, 14929); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction454___action, LOCATE_parser, 14996); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(84)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction452___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction452___init, 14933};
+void parser___ReduceAction454___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15000, LOCATE_parser___ReduceAction454___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction452].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction452].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction454].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction454].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction453___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction453___action, 14937};
+void parser___ReduceAction455___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15004, LOCATE_parser___ReduceAction455___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28727,10 +28874,10 @@ void parser___ReduceAction453___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tkwnotnode2*/==NIT_NULL) || VAL_ISA( variable5 /*tkwnotnode2*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction453___action, 14944); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction455___action, LOCATE_parser, 15011); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist3*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction453___action, 14946); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction455___action, LOCATE_parser, 15013); nit_exit(1);}
   variable8 = NEW_parser_prod___ANotExpr___init_anotexpr( variable5 /*tkwnotnode2*/,  variable6 /*pexprnode3*/); /*new ANotExpr*/
   variable7 = variable8;
   variable1 =  variable7 /*pexprnode1*/ /*node_list=*/;
@@ -28739,16 +28886,16 @@ void parser___ReduceAction453___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction453___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction453___init, 14954};
+void parser___ReduceAction455___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15021, LOCATE_parser___ReduceAction455___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction453].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction453].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction455].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction455].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction454___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction454___action, 14958};
+void parser___ReduceAction456___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15025, LOCATE_parser___ReduceAction456___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28761,23 +28908,23 @@ void parser___ReduceAction454___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction454___action, 14963); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction456___action, LOCATE_parser, 15030); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(85)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction454___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction454___init, 14967};
+void parser___ReduceAction456___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15034, LOCATE_parser___ReduceAction456___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction454].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction454].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction456].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction456].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction455___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction455___action, 14971};
+void parser___ReduceAction457___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15038, LOCATE_parser___ReduceAction457___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28801,10 +28948,10 @@ void parser___ReduceAction455___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction455___action, 14979); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction457___action, LOCATE_parser, 15046); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction455___action, 14981); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction457___action, LOCATE_parser, 15048); nit_exit(1);}
   variable9 = NEW_parser_prod___AEqExpr___init_aeqexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AEqExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -28813,16 +28960,16 @@ void parser___ReduceAction455___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction455___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction455___init, 14989};
+void parser___ReduceAction457___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15056, LOCATE_parser___ReduceAction457___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction455].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction455].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction457].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction457].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction456___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction456___action, 14993};
+void parser___ReduceAction458___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15060, LOCATE_parser___ReduceAction458___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28846,10 +28993,10 @@ void parser___ReduceAction456___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction456___action, 15001); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction458___action, LOCATE_parser, 15068); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction456___action, 15003); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction458___action, LOCATE_parser, 15070); nit_exit(1);}
   variable9 = NEW_parser_prod___AEeExpr___init_aeeexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AEeExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -28858,16 +29005,16 @@ void parser___ReduceAction456___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction456___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction456___init, 15011};
+void parser___ReduceAction458___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15078, LOCATE_parser___ReduceAction458___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction456].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction456].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction458].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction458].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction457___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction457___action, 15015};
+void parser___ReduceAction459___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15082, LOCATE_parser___ReduceAction459___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28891,10 +29038,10 @@ void parser___ReduceAction457___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction457___action, 15023); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction459___action, LOCATE_parser, 15090); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction457___action, 15025); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction459___action, LOCATE_parser, 15092); nit_exit(1);}
   variable9 = NEW_parser_prod___ANeExpr___init_aneexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new ANeExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -28903,16 +29050,16 @@ void parser___ReduceAction457___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction457___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction457___init, 15033};
+void parser___ReduceAction459___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15100, LOCATE_parser___ReduceAction459___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction457].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction457].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction459].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction459].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction458___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction458___action, 15037};
+void parser___ReduceAction460___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15104, LOCATE_parser___ReduceAction460___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28936,10 +29083,10 @@ void parser___ReduceAction458___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction458___action, 15045); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction460___action, LOCATE_parser, 15112); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction458___action, 15047); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction460___action, LOCATE_parser, 15114); nit_exit(1);}
   variable9 = NEW_parser_prod___ALtExpr___init_altexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new ALtExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -28948,16 +29095,16 @@ void parser___ReduceAction458___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction458___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction458___init, 15055};
+void parser___ReduceAction460___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15122, LOCATE_parser___ReduceAction460___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction458].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction458].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction460].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction460].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction459___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction459___action, 15059};
+void parser___ReduceAction461___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15126, LOCATE_parser___ReduceAction461___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -28981,10 +29128,10 @@ void parser___ReduceAction459___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction459___action, 15067); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction461___action, LOCATE_parser, 15134); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction459___action, 15069); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction461___action, LOCATE_parser, 15136); nit_exit(1);}
   variable9 = NEW_parser_prod___ALeExpr___init_aleexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new ALeExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -28993,16 +29140,16 @@ void parser___ReduceAction459___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction459___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction459___init, 15077};
+void parser___ReduceAction461___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15144, LOCATE_parser___ReduceAction461___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction459].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction459].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction461].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction461].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction460___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction460___action, 15081};
+void parser___ReduceAction462___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15148, LOCATE_parser___ReduceAction462___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29026,10 +29173,10 @@ void parser___ReduceAction460___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction460___action, 15089); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction462___action, LOCATE_parser, 15156); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction460___action, 15091); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction462___action, LOCATE_parser, 15158); nit_exit(1);}
   variable9 = NEW_parser_prod___AGtExpr___init_agtexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AGtExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -29038,16 +29185,16 @@ void parser___ReduceAction460___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction460___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction460___init, 15099};
+void parser___ReduceAction462___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15166, LOCATE_parser___ReduceAction462___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction460].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction460].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction462].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction462].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction461___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction461___action, 15103};
+void parser___ReduceAction463___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15170, LOCATE_parser___ReduceAction463___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29071,10 +29218,10 @@ void parser___ReduceAction461___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction461___action, 15111); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction463___action, LOCATE_parser, 15178); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction461___action, 15113); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction463___action, LOCATE_parser, 15180); nit_exit(1);}
   variable9 = NEW_parser_prod___AGeExpr___init_ageexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AGeExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -29083,16 +29230,16 @@ void parser___ReduceAction461___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction461___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction461___init, 15121};
+void parser___ReduceAction463___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15188, LOCATE_parser___ReduceAction463___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction461].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction461].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction463].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction463].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction462___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction462___action, 15125};
+void parser___ReduceAction464___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15192, LOCATE_parser___ReduceAction464___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29116,10 +29263,10 @@ void parser___ReduceAction462___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction462___action, 15133); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction464___action, LOCATE_parser, 15200); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction462___action, 15135); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction464___action, LOCATE_parser, 15202); nit_exit(1);}
   variable9 = NEW_parser_prod___AStarshipExpr___init_astarshipexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AStarshipExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -29128,16 +29275,16 @@ void parser___ReduceAction462___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction462___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction462___init, 15143};
+void parser___ReduceAction464___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15210, LOCATE_parser___ReduceAction464___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction462].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction462].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction464].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction464].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction463___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction463___action, 15147};
+void parser___ReduceAction465___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15214, LOCATE_parser___ReduceAction465___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29161,10 +29308,10 @@ void parser___ReduceAction463___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction463___action, 15155); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction465___action, LOCATE_parser, 15222); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable7 /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction463___action, 15157); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction465___action, LOCATE_parser, 15224); nit_exit(1);}
   variable9 = NEW_parser_prod___AIsaExpr___init_aisaexpr( variable6 /*pexprnode2*/,  variable7 /*ptypenode3*/); /*new AIsaExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -29173,16 +29320,16 @@ void parser___ReduceAction463___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction463___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction463___init, 15165};
+void parser___ReduceAction465___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15232, LOCATE_parser___ReduceAction465___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction463].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction463].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction465].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction465].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction464___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction464___action, 15169};
+void parser___ReduceAction466___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15236, LOCATE_parser___ReduceAction466___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29195,23 +29342,23 @@ void parser___ReduceAction464___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction464___action, 15174); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction466___action, LOCATE_parser, 15241); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(86)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction464___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction464___init, 15178};
+void parser___ReduceAction466___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15245, LOCATE_parser___ReduceAction466___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction464].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction464].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction466].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction466].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction465___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction465___action, 15182};
+void parser___ReduceAction467___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15249, LOCATE_parser___ReduceAction467___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29235,10 +29382,10 @@ void parser___ReduceAction465___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction465___action, 15190); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction467___action, LOCATE_parser, 15257); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction465___action, 15192); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction467___action, LOCATE_parser, 15259); nit_exit(1);}
   variable9 = NEW_parser_prod___APlusExpr___init_aplusexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new APlusExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -29247,16 +29394,16 @@ void parser___ReduceAction465___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction465___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction465___init, 15200};
+void parser___ReduceAction467___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15267, LOCATE_parser___ReduceAction467___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction465].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction465].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction467].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction467].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction466___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction466___action, 15204};
+void parser___ReduceAction468___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15271, LOCATE_parser___ReduceAction468___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29280,10 +29427,10 @@ void parser___ReduceAction466___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction466___action, 15212); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction468___action, LOCATE_parser, 15279); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction466___action, 15214); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction468___action, LOCATE_parser, 15281); nit_exit(1);}
   variable9 = NEW_parser_prod___AMinusExpr___init_aminusexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AMinusExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -29292,16 +29439,16 @@ void parser___ReduceAction466___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction466___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction466___init, 15222};
+void parser___ReduceAction468___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15289, LOCATE_parser___ReduceAction468___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction466].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction466].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction468].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction468].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction467___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction467___action, 15226};
+void parser___ReduceAction469___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15293, LOCATE_parser___ReduceAction469___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29314,23 +29461,23 @@ void parser___ReduceAction467___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction467___action, 15231); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction469___action, LOCATE_parser, 15298); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(87)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction467___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction467___init, 15235};
+void parser___ReduceAction469___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15302, LOCATE_parser___ReduceAction469___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction467].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction467].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction469].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction469].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction468___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction468___action, 15239};
+void parser___ReduceAction470___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15306, LOCATE_parser___ReduceAction470___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29354,10 +29501,10 @@ void parser___ReduceAction468___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction468___action, 15247); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction470___action, LOCATE_parser, 15314); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction468___action, 15249); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction470___action, LOCATE_parser, 15316); nit_exit(1);}
   variable9 = NEW_parser_prod___AStarExpr___init_astarexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AStarExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -29366,16 +29513,16 @@ void parser___ReduceAction468___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction468___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction468___init, 15257};
+void parser___ReduceAction470___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15324, LOCATE_parser___ReduceAction470___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction468].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction468].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction470].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction470].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction469___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction469___action, 15261};
+void parser___ReduceAction471___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15328, LOCATE_parser___ReduceAction471___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29399,10 +29546,10 @@ void parser___ReduceAction469___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction469___action, 15269); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction471___action, LOCATE_parser, 15336); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction469___action, 15271); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction471___action, LOCATE_parser, 15338); nit_exit(1);}
   variable9 = NEW_parser_prod___ASlashExpr___init_aslashexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new ASlashExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -29411,16 +29558,16 @@ void parser___ReduceAction469___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction469___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction469___init, 15279};
+void parser___ReduceAction471___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15346, LOCATE_parser___ReduceAction471___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction469].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction469].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction471].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction471].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction470___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction470___action, 15283};
+void parser___ReduceAction472___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15350, LOCATE_parser___ReduceAction472___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29444,10 +29591,10 @@ void parser___ReduceAction470___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction470___action, 15291); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction472___action, LOCATE_parser, 15358); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction470___action, 15293); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction472___action, LOCATE_parser, 15360); nit_exit(1);}
   variable9 = NEW_parser_prod___APercentExpr___init_apercentexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new APercentExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -29456,16 +29603,16 @@ void parser___ReduceAction470___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction470___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction470___init, 15301};
+void parser___ReduceAction472___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15368, LOCATE_parser___ReduceAction472___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction470].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction470].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction472].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction472].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction471___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction471___action, 15305};
+void parser___ReduceAction473___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15372, LOCATE_parser___ReduceAction473___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29478,23 +29625,23 @@ void parser___ReduceAction471___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction471___action, 15310); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction473___action, LOCATE_parser, 15377); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(88)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction471___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction471___init, 15314};
+void parser___ReduceAction473___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15381, LOCATE_parser___ReduceAction473___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction471].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction471].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction473].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction473].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction472___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction472___action, 15318};
+void parser___ReduceAction474___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15385, LOCATE_parser___ReduceAction474___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29515,10 +29662,10 @@ void parser___ReduceAction472___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tminusnode2*/==NIT_NULL) || VAL_ISA( variable5 /*tminusnode2*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction472___action, 15325); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction474___action, LOCATE_parser, 15392); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist3*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction472___action, 15327); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction474___action, LOCATE_parser, 15394); nit_exit(1);}
   variable8 = NEW_parser_prod___AUminusExpr___init_auminusexpr( variable5 /*tminusnode2*/,  variable6 /*pexprnode3*/); /*new AUminusExpr*/
   variable7 = variable8;
   variable1 =  variable7 /*pexprnode1*/ /*node_list=*/;
@@ -29527,16 +29674,16 @@ void parser___ReduceAction472___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction472___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction472___init, 15335};
+void parser___ReduceAction474___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15402, LOCATE_parser___ReduceAction474___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction472].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction472].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction474].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction474].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction473___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction473___action, 15339};
+void parser___ReduceAction475___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15406, LOCATE_parser___ReduceAction475___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29557,10 +29704,10 @@ void parser___ReduceAction473___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tkwoncenode2*/==NIT_NULL) || VAL_ISA( variable5 /*tkwoncenode2*/, COLOR_TKwonce, ID_TKwonce)) /*cast TKwonce*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction473___action, 15346); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction475___action, LOCATE_parser, 15413); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist3*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction473___action, 15348); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction475___action, LOCATE_parser, 15415); nit_exit(1);}
   variable8 = NEW_parser_prod___AOnceExpr___init_aonceexpr( variable5 /*tkwoncenode2*/,  variable6 /*pexprnode3*/); /*new AOnceExpr*/
   variable7 = variable8;
   variable1 =  variable7 /*pexprnode1*/ /*node_list=*/;
@@ -29569,16 +29716,16 @@ void parser___ReduceAction473___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction473___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction473___init, 15356};
+void parser___ReduceAction475___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15423, LOCATE_parser___ReduceAction475___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction473].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction473].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction475].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction475].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction474___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction474___action, 15360};
+void parser___ReduceAction476___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15427, LOCATE_parser___ReduceAction476___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29591,23 +29738,23 @@ void parser___ReduceAction474___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction474___action, 15365); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction476___action, LOCATE_parser, 15432); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(89)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction474___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction474___init, 15369};
+void parser___ReduceAction476___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15436, LOCATE_parser___ReduceAction476___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction474].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction474].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction476].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction476].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction475___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction475___action, 15373};
+void parser___ReduceAction477___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15440, LOCATE_parser___ReduceAction477___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29631,24 +29778,24 @@ void parser___ReduceAction475___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable5 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*tkwnewnode2*/==NIT_NULL) || VAL_ISA( variable7 /*tkwnewnode2*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction475___action, 15382); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction477___action, LOCATE_parser, 15449); nit_exit(1);}
   variable8 =  variable3 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable8 /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction475___action, 15384); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction477___action, LOCATE_parser, 15451); nit_exit(1);}
   variable9 =  variable2 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*listnode5*/==NIT_NULL) || VAL_ISA( variable9 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction475___action, 15386); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction477___action, LOCATE_parser, 15453); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode6*/) /*Array::is_empty*/;
+    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable10)) { /*if*/
       variable6 =  variable9 /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode6*/,  variable9 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode6*/,  variable9 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable11 = NEW_parser_prod___ANewExpr___init_anewexpr( variable7 /*tkwnewnode2*/,  variable8 /*ptypenode3*/,  NIT_NULL /*null*/,  variable6 /*listnode6*/); /*new ANewExpr*/
@@ -29659,16 +29806,16 @@ void parser___ReduceAction475___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction475___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction475___init, 15403};
+void parser___ReduceAction477___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15470, LOCATE_parser___ReduceAction477___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction475].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction475].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction477].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction477].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction476___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction476___action, 15407};
+void parser___ReduceAction478___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15474, LOCATE_parser___ReduceAction478___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29692,10 +29839,10 @@ void parser___ReduceAction476___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction476___action, 15415); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction478___action, LOCATE_parser, 15482); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable7 /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction476___action, 15417); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction478___action, LOCATE_parser, 15484); nit_exit(1);}
   variable9 = NEW_parser_prod___AAttrExpr___init_aattrexpr( variable6 /*pexprnode2*/,  variable7 /*tattridnode3*/); /*new AAttrExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -29704,16 +29851,16 @@ void parser___ReduceAction476___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction476___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction476___init, 15425};
+void parser___ReduceAction478___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15492, LOCATE_parser___ReduceAction478___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction476].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction476].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction478].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction478].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction477___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction477___action, 15429};
+void parser___ReduceAction479___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15496, LOCATE_parser___ReduceAction479___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29730,7 +29877,7 @@ void parser___ReduceAction477___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable4 /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction477___action, 15436); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction479___action, LOCATE_parser, 15503); nit_exit(1);}
   variable6 = NEW_parser_prod___AAttrExpr___init_aattrexpr( variable3 /*pexprnode2*/,  variable4 /*tattridnode3*/); /*new AAttrExpr*/
   variable5 = variable6;
   variable1 =  variable5 /*pexprnode1*/ /*node_list=*/;
@@ -29739,16 +29886,16 @@ void parser___ReduceAction477___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction477___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction477___init, 15444};
+void parser___ReduceAction479___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15511, LOCATE_parser___ReduceAction479___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction477].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction477].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction479].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction479].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction478___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction478___action, 15448};
+void parser___ReduceAction480___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15515, LOCATE_parser___ReduceAction480___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29775,24 +29922,24 @@ void parser___ReduceAction478___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable6 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction478___action, 15458); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction480___action, LOCATE_parser, 15525); nit_exit(1);}
   variable9 =  variable3 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable9 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction478___action, 15460); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction480___action, LOCATE_parser, 15527); nit_exit(1);}
   variable10 =  variable2 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*listnode4*/==NIT_NULL) || VAL_ISA( variable10 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction478___action, 15462); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction480___action, LOCATE_parser, 15529); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable7 =  variable10 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable12 = NEW_parser_prod___ACallExpr___init_acallexpr( variable8 /*pexprnode2*/,  variable9 /*tidnode3*/,  variable7 /*listnode5*/); /*new ACallExpr*/
@@ -29803,16 +29950,16 @@ void parser___ReduceAction478___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction478___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction478___init, 15478};
+void parser___ReduceAction480___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15545, LOCATE_parser___ReduceAction480___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction478].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction478].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction480].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction480].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction479___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction479___action, 15482};
+void parser___ReduceAction481___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15549, LOCATE_parser___ReduceAction481___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29830,23 +29977,23 @@ void parser___ReduceAction479___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable6 = NEW_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable6 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction479___action, 15491); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction481___action, LOCATE_parser, 15558); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*listnode4*/==NIT_NULL) || VAL_ISA( variable7 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction479___action, 15493); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction481___action, LOCATE_parser, 15560); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*Array::is_empty*/;
+    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable8)) { /*if*/
       variable4 =  variable7 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable9 = NEW_parser_prod___ACallExpr___init_acallexpr( variable5 /*pexprnode2*/,  variable6 /*tidnode3*/,  variable4 /*listnode5*/); /*new ACallExpr*/
@@ -29857,16 +30004,16 @@ void parser___ReduceAction479___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction479___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction479___init, 15509};
+void parser___ReduceAction481___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15576, LOCATE_parser___ReduceAction481___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction479].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction479].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction481].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction481].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction480___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction480___action, 15513};
+void parser___ReduceAction482___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15580, LOCATE_parser___ReduceAction482___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29883,21 +30030,21 @@ void parser___ReduceAction480___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable5 /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction480___action, 15520); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction482___action, LOCATE_parser, 15587); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*listnode4*/==NIT_NULL) || VAL_ISA( variable6 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction480___action, 15522); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction482___action, LOCATE_parser, 15589); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable6 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable6 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable6 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable8 = NEW_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable5 /*tkwsupernode3*/,  variable4 /*listnode5*/); /*new ASuperExpr*/
@@ -29908,16 +30055,16 @@ void parser___ReduceAction480___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction480___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction480___init, 15538};
+void parser___ReduceAction482___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15605, LOCATE_parser___ReduceAction482___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction480].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction480].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction482].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction482].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction481___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction481___action, 15542};
+void parser___ReduceAction483___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15609, LOCATE_parser___ReduceAction483___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -29938,24 +30085,24 @@ void parser___ReduceAction481___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable6 =  variable4 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pqualifiednode2*/==NIT_NULL) || VAL_ISA( variable6 /*pqualifiednode2*/, COLOR_PQualified, ID_PQualified)) /*cast PQualified*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction481___action, 15550); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction483___action, LOCATE_parser, 15617); nit_exit(1);}
   variable7 =  variable3 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable7 /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction481___action, 15552); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction483___action, LOCATE_parser, 15619); nit_exit(1);}
   variable8 =  variable2 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*listnode4*/==NIT_NULL) || VAL_ISA( variable8 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction481___action, 15554); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction483___action, LOCATE_parser, 15621); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable5 =  variable8 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable8 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable8 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable10 = NEW_parser_prod___ASuperExpr___init_asuperexpr( variable6 /*pqualifiednode2*/,  variable7 /*tkwsupernode3*/,  variable5 /*listnode5*/); /*new ASuperExpr*/
@@ -29966,16 +30113,16 @@ void parser___ReduceAction481___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction481___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction481___init, 15570};
+void parser___ReduceAction483___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15637, LOCATE_parser___ReduceAction483___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction481].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction481].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction483].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction483].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction482___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction482___action, 15574};
+void parser___ReduceAction484___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15641, LOCATE_parser___ReduceAction484___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30002,24 +30149,24 @@ void parser___ReduceAction482___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable6 = variable7;
-  variable8 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable8 = NEW_array___Array___init(); /*new Array[E]*/
   variable7 = variable8;
   variable8 =  variable6 /*nodearraylist1*/;
   variable9 = TAG_Bool(( variable8 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable8 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction482___action, 15584); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction484___action, LOCATE_parser, 15651); nit_exit(1);}
   variable9 =  variable3 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable9 /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction482___action, 15586); nit_exit(1);}
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction484___action, LOCATE_parser, 15653); nit_exit(1);}
   variable10 =  variable2 /*nodearraylist5*/;
   variable11 = TAG_Bool(( variable10 /*listnode4*/==NIT_NULL) || VAL_ISA( variable10 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction482___action, 15588); nit_exit(1);}
-  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction484___action, LOCATE_parser, 15655); nit_exit(1);}
+  variable11 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable10 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable10 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable10 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable10 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable10 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable11)) { /*if*/
-    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*Array::is_empty*/;
+    variable11 = ((array___AbstractArray___is_empty_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable7 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable11)) { /*if*/
       variable7 =  variable10 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable7 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable7 /*listnode5*/,  variable10 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable12 = NEW_parser_prod___AInitExpr___init_ainitexpr( variable8 /*pexprnode2*/,  variable9 /*tkwinitnode3*/,  variable7 /*listnode5*/); /*new AInitExpr*/
@@ -30030,16 +30177,16 @@ void parser___ReduceAction482___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction482___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction482___init, 15604};
+void parser___ReduceAction484___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15671, LOCATE_parser___ReduceAction484___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction482].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction482].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction484].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction484].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction483___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction483___action, 15608};
+void parser___ReduceAction485___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15675, LOCATE_parser___ReduceAction485___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30057,23 +30204,23 @@ void parser___ReduceAction483___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable6 = NEW_parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr(); /*new AImplicitSelfExpr*/
   variable5 = variable6;
   variable6 =  variable3 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable6 /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction483___action, 15617); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction485___action, LOCATE_parser, 15684); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*listnode4*/==NIT_NULL) || VAL_ISA( variable7 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction483___action, 15619); nit_exit(1);}
-  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction485___action, LOCATE_parser, 15686); nit_exit(1);}
+  variable8 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable7 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable7 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable7 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable7 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable7 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable8)) { /*if*/
-    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*Array::is_empty*/;
+    variable8 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable8)) { /*if*/
       variable4 =  variable7 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable7 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable9 = NEW_parser_prod___AInitExpr___init_ainitexpr( variable5 /*pexprnode2*/,  variable6 /*tkwinitnode3*/,  variable4 /*listnode5*/); /*new AInitExpr*/
@@ -30084,16 +30231,16 @@ void parser___ReduceAction483___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction483___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction483___init, 15635};
+void parser___ReduceAction485___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15702, LOCATE_parser___ReduceAction485___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction483].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction483].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction485].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction485].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction484___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction484___action, 15639};
+void parser___ReduceAction486___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15706, LOCATE_parser___ReduceAction486___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30127,27 +30274,27 @@ void parser___ReduceAction484___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable9 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable8 = variable9;
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
   variable10 =  variable8 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*tkwnewnode2*/==NIT_NULL) || VAL_ISA( variable10 /*tkwnewnode2*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction484___action, 15651); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction486___action, LOCATE_parser, 15718); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable11 /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction484___action, 15653); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction486___action, LOCATE_parser, 15720); nit_exit(1);}
   variable12 =  variable3 /*nodearraylist6*/;
   variable13 = TAG_Bool(( variable12 /*tidnode4*/==NIT_NULL) || VAL_ISA( variable12 /*tidnode4*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction484___action, 15655); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction486___action, LOCATE_parser, 15722); nit_exit(1);}
   variable13 =  variable2 /*nodearraylist7*/;
   variable14 = TAG_Bool(( variable13 /*listnode5*/==NIT_NULL) || VAL_ISA( variable13 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction484___action, 15657); nit_exit(1);}
-  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable13 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction486___action, LOCATE_parser, 15724); nit_exit(1);}
+  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable14)) { /*if*/
-    variable14 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode6*/) /*Array::is_empty*/;
+    variable14 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable14)) { /*if*/
       variable9 =  variable13 /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode6*/,  variable13 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode6*/,  variable13 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable15 = NEW_parser_prod___ANewExpr___init_anewexpr( variable10 /*tkwnewnode2*/,  variable11 /*ptypenode3*/,  variable12 /*tidnode4*/,  variable9 /*listnode6*/); /*new ANewExpr*/
@@ -30158,16 +30305,16 @@ void parser___ReduceAction484___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction484___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction484___init, 15674};
+void parser___ReduceAction486___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15741, LOCATE_parser___ReduceAction486___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction484].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction484].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction486].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction486].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction485___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction485___action, 15678};
+void parser___ReduceAction487___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15745, LOCATE_parser___ReduceAction487___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30181,7 +30328,7 @@ void parser___ReduceAction485___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwselfnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwselfnode2*/, COLOR_TKwself, ID_TKwself)) /*cast TKwself*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction485___action, 15683); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction487___action, LOCATE_parser, 15750); nit_exit(1);}
   variable5 = NEW_parser_prod___ASelfExpr___init_aselfexpr( variable3 /*tkwselfnode2*/); /*new ASelfExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -30190,16 +30337,16 @@ void parser___ReduceAction485___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction485___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction485___init, 15690};
+void parser___ReduceAction487___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15757, LOCATE_parser___ReduceAction487___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction485].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction485].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction487].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction487].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction486___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction486___action, 15694};
+void parser___ReduceAction488___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15761, LOCATE_parser___ReduceAction488___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30213,7 +30360,7 @@ void parser___ReduceAction486___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwtruenode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwtruenode2*/, COLOR_TKwtrue, ID_TKwtrue)) /*cast TKwtrue*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction486___action, 15699); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction488___action, LOCATE_parser, 15766); nit_exit(1);}
   variable5 = NEW_parser_prod___ATrueExpr___init_atrueexpr( variable3 /*tkwtruenode2*/); /*new ATrueExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -30222,16 +30369,16 @@ void parser___ReduceAction486___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction486___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction486___init, 15706};
+void parser___ReduceAction488___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15773, LOCATE_parser___ReduceAction488___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction486].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction486].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction488].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction488].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction487___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction487___action, 15710};
+void parser___ReduceAction489___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15777, LOCATE_parser___ReduceAction489___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30245,7 +30392,7 @@ void parser___ReduceAction487___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwfalsenode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwfalsenode2*/, COLOR_TKwfalse, ID_TKwfalse)) /*cast TKwfalse*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction487___action, 15715); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction489___action, LOCATE_parser, 15782); nit_exit(1);}
   variable5 = NEW_parser_prod___AFalseExpr___init_afalseexpr( variable3 /*tkwfalsenode2*/); /*new AFalseExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -30254,16 +30401,16 @@ void parser___ReduceAction487___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction487___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction487___init, 15722};
+void parser___ReduceAction489___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15789, LOCATE_parser___ReduceAction489___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction487].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction487].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction489].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction489].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction488___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction488___action, 15726};
+void parser___ReduceAction490___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15793, LOCATE_parser___ReduceAction490___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30277,7 +30424,7 @@ void parser___ReduceAction488___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwnullnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwnullnode2*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction488___action, 15731); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction490___action, LOCATE_parser, 15798); nit_exit(1);}
   variable5 = NEW_parser_prod___ANullExpr___init_anullexpr( variable3 /*tkwnullnode2*/); /*new ANullExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -30286,16 +30433,16 @@ void parser___ReduceAction488___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction488___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction488___init, 15738};
+void parser___ReduceAction490___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15805, LOCATE_parser___ReduceAction490___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction488].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction488].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction490].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction490].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction489___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction489___action, 15742};
+void parser___ReduceAction491___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15809, LOCATE_parser___ReduceAction491___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30309,7 +30456,7 @@ void parser___ReduceAction489___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tnumbernode2*/==NIT_NULL) || VAL_ISA( variable3 /*tnumbernode2*/, COLOR_TNumber, ID_TNumber)) /*cast TNumber*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction489___action, 15747); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction491___action, LOCATE_parser, 15814); nit_exit(1);}
   variable5 = NEW_parser_prod___AIntExpr___init_aintexpr( variable3 /*tnumbernode2*/); /*new AIntExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -30318,16 +30465,16 @@ void parser___ReduceAction489___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction489___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction489___init, 15754};
+void parser___ReduceAction491___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15821, LOCATE_parser___ReduceAction491___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction489].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction489].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction491].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction491].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction490___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction490___action, 15758};
+void parser___ReduceAction492___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15825, LOCATE_parser___ReduceAction492___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30341,7 +30488,7 @@ void parser___ReduceAction490___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tfloatnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tfloatnode2*/, COLOR_TFloat, ID_TFloat)) /*cast TFloat*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction490___action, 15763); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction492___action, LOCATE_parser, 15830); nit_exit(1);}
   variable5 = NEW_parser_prod___AFloatExpr___init_afloatexpr( variable3 /*tfloatnode2*/); /*new AFloatExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -30350,16 +30497,16 @@ void parser___ReduceAction490___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction490___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction490___init, 15770};
+void parser___ReduceAction492___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15837, LOCATE_parser___ReduceAction492___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction490].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction490].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction492].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction492].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction491___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction491___action, 15774};
+void parser___ReduceAction493___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15841, LOCATE_parser___ReduceAction493___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30373,7 +30520,7 @@ void parser___ReduceAction491___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tcharnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tcharnode2*/, COLOR_TChar, ID_TChar)) /*cast TChar*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction491___action, 15779); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction493___action, LOCATE_parser, 15846); nit_exit(1);}
   variable5 = NEW_parser_prod___ACharExpr___init_acharexpr( variable3 /*tcharnode2*/); /*new ACharExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -30382,16 +30529,16 @@ void parser___ReduceAction491___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction491___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction491___init, 15786};
+void parser___ReduceAction493___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15853, LOCATE_parser___ReduceAction493___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction491].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction491].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction493].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction493].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction492___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction492___action, 15790};
+void parser___ReduceAction494___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15857, LOCATE_parser___ReduceAction494___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30405,7 +30552,7 @@ void parser___ReduceAction492___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tstringnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tstringnode2*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction492___action, 15795); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction494___action, LOCATE_parser, 15862); nit_exit(1);}
   variable5 = NEW_parser_prod___AStringExpr___init_astringexpr( variable3 /*tstringnode2*/); /*new AStringExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -30414,16 +30561,16 @@ void parser___ReduceAction492___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction492___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction492___init, 15802};
+void parser___ReduceAction494___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15869, LOCATE_parser___ReduceAction494___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction492].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction492].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction494].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction494].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction493___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction493___action, 15806};
+void parser___ReduceAction495___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15873, LOCATE_parser___ReduceAction495___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30436,23 +30583,90 @@ void parser___ReduceAction493___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction493___action, 15811); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction495___action, LOCATE_parser, 15878); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(90)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction493___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction493___init, 15815};
+void parser___ReduceAction495___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15882, LOCATE_parser___ReduceAction495___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction493].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction493].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction495].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction495].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction494___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction494___action, 15819};
+void parser___ReduceAction496___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15886, LOCATE_parser___ReduceAction496___action};
+  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 =  NIT_NULL /*null*/;
+  variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable2 = variable3;
+  variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable3 = variable4;
+  variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable4 = variable5;
+  variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable5 = variable6;
+  variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable6 = variable7;
+  variable8 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable7 = variable8;
+  variable9 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable8 = variable9;
+  variable10 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable9 = variable10;
+  variable11 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable10 = variable11;
+  variable12 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable11 = variable12;
+  variable12 =  variable11 /*nodearraylist1*/;
+  variable13 = TAG_Bool(( variable12 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction496___action, LOCATE_parser, 15900); nit_exit(1);}
+  variable13 =  variable8 /*nodearraylist4*/;
+  variable14 = TAG_Bool(( variable13 /*tkwasnode3*/==NIT_NULL) || VAL_ISA( variable13 /*tkwasnode3*/, COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction496___action, LOCATE_parser, 15902); nit_exit(1);}
+  variable14 =  variable4 /*nodearraylist8*/;
+  variable15 = TAG_Bool(( variable14 /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable14 /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction496___action, LOCATE_parser, 15904); nit_exit(1);}
+  variable16 = NEW_parser_prod___AAsCastExpr___init_aascastexpr( variable12 /*pexprnode2*/,  variable13 /*tkwasnode3*/,  variable14 /*ptypenode4*/); /*new AAsCastExpr*/
+  variable15 = variable16;
+  variable1 =  variable15 /*pexprnode1*/ /*node_list=*/;
+  variable16 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(90)) /*Parser::go_to*/;
+  ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable16,  variable1 /*node_list*/) /*Parser::push*/;
+  tracehead = trace.prev;
+  return;
+}
+void parser___ReduceAction496___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15913, LOCATE_parser___ReduceAction496___init};
+  trace.prev = tracehead; tracehead = &trace;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction496].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction496].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser___ReduceAction497___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15917, LOCATE_parser___ReduceAction497___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30465,11 +30679,11 @@ void parser___ReduceAction494___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tclassidnode2*/==NIT_NULL) || VAL_ISA( variable4 /*tclassidnode2*/, COLOR_TClassid, ID_TClassid)) /*cast TClassid*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction494___action, 15825); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction497___action, LOCATE_parser, 15923); nit_exit(1);}
   variable6 = NEW_parser_prod___AType___init_atype( variable4 /*tclassidnode2*/,  variable3 /*listnode3*/); /*new AType*/
   variable5 = variable6;
   variable1 =  variable5 /*ptypenode1*/ /*node_list=*/;
@@ -30478,16 +30692,16 @@ void parser___ReduceAction494___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction494___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction494___init, 15833};
+void parser___ReduceAction497___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15931, LOCATE_parser___ReduceAction497___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction494].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction494].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction497].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction497].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction495___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction495___action, 15837};
+void parser___ReduceAction498___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15935, LOCATE_parser___ReduceAction498___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30500,23 +30714,23 @@ void parser___ReduceAction495___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction495___action, 15842); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction498___action, LOCATE_parser, 15940); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(92)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction495___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction495___init, 15846};
+void parser___ReduceAction498___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15944, LOCATE_parser___ReduceAction498___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction495].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction495].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction498].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction498].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction496___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction496___action, 15850};
+void parser___ReduceAction499___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15948, LOCATE_parser___ReduceAction499___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30565,22 +30779,22 @@ void parser___ReduceAction496___action(val_t  self, val_t  param0) {
   variable12 = variable13;
   variable13 =  variable12 /*nodearraylist1*/;
   variable14 = TAG_Bool(( variable13 /*tkwifnode2*/==NIT_NULL) || VAL_ISA( variable13 /*tkwifnode2*/, COLOR_TKwif, ID_TKwif)) /*cast TKwif*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction496___action, 15865); nit_exit(1);}
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction499___action, LOCATE_parser, 15963); nit_exit(1);}
   variable14 =  variable10 /*nodearraylist3*/;
   variable15 = TAG_Bool(( variable14 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable14 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction496___action, 15867); nit_exit(1);}
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction499___action, LOCATE_parser, 15965); nit_exit(1);}
   variable15 =  variable8 /*nodearraylist5*/;
   variable16 = TAG_Bool(( variable15 /*tkwthennode4*/==NIT_NULL) || VAL_ISA( variable15 /*tkwthennode4*/, COLOR_TKwthen, ID_TKwthen)) /*cast TKwthen*/;
-  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction496___action, 15869); nit_exit(1);}
+  if (!UNTAG_Bool(variable16)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction499___action, LOCATE_parser, 15967); nit_exit(1);}
   variable16 =  variable6 /*nodearraylist7*/;
   variable17 = TAG_Bool(( variable16 /*pexprnode5*/==NIT_NULL) || VAL_ISA( variable16 /*pexprnode5*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction496___action, 15871); nit_exit(1);}
+  if (!UNTAG_Bool(variable17)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction499___action, LOCATE_parser, 15969); nit_exit(1);}
   variable17 =  variable4 /*nodearraylist9*/;
   variable18 = TAG_Bool(( variable17 /*tkwelsenode6*/==NIT_NULL) || VAL_ISA( variable17 /*tkwelsenode6*/, COLOR_TKwelse, ID_TKwelse)) /*cast TKwelse*/;
-  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction496___action, 15873); nit_exit(1);}
+  if (!UNTAG_Bool(variable18)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction499___action, LOCATE_parser, 15971); nit_exit(1);}
   variable18 =  variable2 /*nodearraylist11*/;
   variable19 = TAG_Bool(( variable18 /*pexprnode7*/==NIT_NULL) || VAL_ISA( variable18 /*pexprnode7*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction496___action, 15875); nit_exit(1);}
+  if (!UNTAG_Bool(variable19)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction499___action, LOCATE_parser, 15973); nit_exit(1);}
   variable20 = NEW_parser_prod___AIfexprExpr___init_aifexprexpr( variable13 /*tkwifnode2*/,  variable14 /*pexprnode3*/,  variable15 /*tkwthennode4*/,  variable16 /*pexprnode5*/,  variable17 /*tkwelsenode6*/,  variable18 /*pexprnode7*/); /*new AIfexprExpr*/
   variable19 = variable20;
   variable1 =  variable19 /*pexprnode1*/ /*node_list=*/;
@@ -30589,16 +30803,16 @@ void parser___ReduceAction496___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction496___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction496___init, 15887};
+void parser___ReduceAction499___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15985, LOCATE_parser___ReduceAction499___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction496].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction496].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction499].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction499].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction497___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction497___action, 15891};
+void parser___ReduceAction500___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15989, LOCATE_parser___ReduceAction500___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30611,23 +30825,23 @@ void parser___ReduceAction497___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction497___action, 15896); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction500___action, LOCATE_parser, 15994); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(93)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction497___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction497___init, 15900};
+void parser___ReduceAction500___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 15998, LOCATE_parser___ReduceAction500___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction497].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction497].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction500].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction500].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction498___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction498___action, 15904};
+void parser___ReduceAction501___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16002, LOCATE_parser___ReduceAction501___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30651,10 +30865,10 @@ void parser___ReduceAction498___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction498___action, 15912); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction501___action, LOCATE_parser, 16010); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction498___action, 15914); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction501___action, LOCATE_parser, 16012); nit_exit(1);}
   variable9 = NEW_parser_prod___AOrExpr___init_aorexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AOrExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -30663,16 +30877,16 @@ void parser___ReduceAction498___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction498___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction498___init, 15922};
+void parser___ReduceAction501___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16020, LOCATE_parser___ReduceAction501___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction498].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction498].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction501].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction501].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction499___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction499___action, 15926};
+void parser___ReduceAction502___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16024, LOCATE_parser___ReduceAction502___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30696,10 +30910,10 @@ void parser___ReduceAction499___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction499___action, 15934); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction502___action, LOCATE_parser, 16032); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction499___action, 15936); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction502___action, LOCATE_parser, 16034); nit_exit(1);}
   variable9 = NEW_parser_prod___AAndExpr___init_aandexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AAndExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -30708,16 +30922,16 @@ void parser___ReduceAction499___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction499___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction499___init, 15944};
+void parser___ReduceAction502___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16042, LOCATE_parser___ReduceAction502___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction499].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction499].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction502].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction502].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction500___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction500___action, 15948};
+void parser___ReduceAction503___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16046, LOCATE_parser___ReduceAction503___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30730,23 +30944,23 @@ void parser___ReduceAction500___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction500___action, 15953); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction503___action, LOCATE_parser, 16051); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(94)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction500___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction500___init, 15957};
+void parser___ReduceAction503___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16055, LOCATE_parser___ReduceAction503___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction500].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction500].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction503].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction503].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction501___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction501___action, 15961};
+void parser___ReduceAction504___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16059, LOCATE_parser___ReduceAction504___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30767,10 +30981,10 @@ void parser___ReduceAction501___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tkwnotnode2*/==NIT_NULL) || VAL_ISA( variable5 /*tkwnotnode2*/, COLOR_TKwnot, ID_TKwnot)) /*cast TKwnot*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction501___action, 15968); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction504___action, LOCATE_parser, 16066); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist3*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction501___action, 15970); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction504___action, LOCATE_parser, 16068); nit_exit(1);}
   variable8 = NEW_parser_prod___ANotExpr___init_anotexpr( variable5 /*tkwnotnode2*/,  variable6 /*pexprnode3*/); /*new ANotExpr*/
   variable7 = variable8;
   variable1 =  variable7 /*pexprnode1*/ /*node_list=*/;
@@ -30779,16 +30993,16 @@ void parser___ReduceAction501___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction501___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction501___init, 15978};
+void parser___ReduceAction504___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16076, LOCATE_parser___ReduceAction504___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction501].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction501].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction504].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction504].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction502___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction502___action, 15982};
+void parser___ReduceAction505___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16080, LOCATE_parser___ReduceAction505___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30801,23 +31015,23 @@ void parser___ReduceAction502___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction502___action, 15987); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction505___action, LOCATE_parser, 16085); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(95)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction502___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction502___init, 15991};
+void parser___ReduceAction505___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16089, LOCATE_parser___ReduceAction505___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction502].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction502].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction505].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction505].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction503___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction503___action, 15995};
+void parser___ReduceAction506___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16093, LOCATE_parser___ReduceAction506___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30841,10 +31055,10 @@ void parser___ReduceAction503___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction503___action, 16003); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction506___action, LOCATE_parser, 16101); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction503___action, 16005); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction506___action, LOCATE_parser, 16103); nit_exit(1);}
   variable9 = NEW_parser_prod___AEqExpr___init_aeqexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AEqExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -30853,16 +31067,16 @@ void parser___ReduceAction503___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction503___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction503___init, 16013};
+void parser___ReduceAction506___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16111, LOCATE_parser___ReduceAction506___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction503].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction503].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction506].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction506].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction504___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction504___action, 16017};
+void parser___ReduceAction507___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16115, LOCATE_parser___ReduceAction507___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30886,10 +31100,10 @@ void parser___ReduceAction504___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction504___action, 16025); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction507___action, LOCATE_parser, 16123); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction504___action, 16027); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction507___action, LOCATE_parser, 16125); nit_exit(1);}
   variable9 = NEW_parser_prod___AEeExpr___init_aeeexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AEeExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -30898,16 +31112,16 @@ void parser___ReduceAction504___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction504___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction504___init, 16035};
+void parser___ReduceAction507___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16133, LOCATE_parser___ReduceAction507___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction504].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction504].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction507].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction507].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction505___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction505___action, 16039};
+void parser___ReduceAction508___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16137, LOCATE_parser___ReduceAction508___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30931,10 +31145,10 @@ void parser___ReduceAction505___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction505___action, 16047); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction508___action, LOCATE_parser, 16145); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction505___action, 16049); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction508___action, LOCATE_parser, 16147); nit_exit(1);}
   variable9 = NEW_parser_prod___ANeExpr___init_aneexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new ANeExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -30943,16 +31157,16 @@ void parser___ReduceAction505___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction505___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction505___init, 16057};
+void parser___ReduceAction508___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16155, LOCATE_parser___ReduceAction508___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction505].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction505].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction508].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction508].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction506___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction506___action, 16061};
+void parser___ReduceAction509___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16159, LOCATE_parser___ReduceAction509___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -30976,10 +31190,10 @@ void parser___ReduceAction506___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction506___action, 16069); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction509___action, LOCATE_parser, 16167); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction506___action, 16071); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction509___action, LOCATE_parser, 16169); nit_exit(1);}
   variable9 = NEW_parser_prod___ALtExpr___init_altexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new ALtExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -30988,16 +31202,16 @@ void parser___ReduceAction506___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction506___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction506___init, 16079};
+void parser___ReduceAction509___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16177, LOCATE_parser___ReduceAction509___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction506].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction506].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction509].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction509].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction507___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction507___action, 16083};
+void parser___ReduceAction510___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16181, LOCATE_parser___ReduceAction510___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31021,10 +31235,10 @@ void parser___ReduceAction507___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction507___action, 16091); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction510___action, LOCATE_parser, 16189); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction507___action, 16093); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction510___action, LOCATE_parser, 16191); nit_exit(1);}
   variable9 = NEW_parser_prod___ALeExpr___init_aleexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new ALeExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -31033,16 +31247,16 @@ void parser___ReduceAction507___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction507___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction507___init, 16101};
+void parser___ReduceAction510___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16199, LOCATE_parser___ReduceAction510___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction507].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction507].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction510].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction510].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction508___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction508___action, 16105};
+void parser___ReduceAction511___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16203, LOCATE_parser___ReduceAction511___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31066,10 +31280,10 @@ void parser___ReduceAction508___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction508___action, 16113); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction511___action, LOCATE_parser, 16211); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction508___action, 16115); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction511___action, LOCATE_parser, 16213); nit_exit(1);}
   variable9 = NEW_parser_prod___AGtExpr___init_agtexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AGtExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -31078,16 +31292,16 @@ void parser___ReduceAction508___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction508___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction508___init, 16123};
+void parser___ReduceAction511___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16221, LOCATE_parser___ReduceAction511___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction508].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction508].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction511].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction511].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction509___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction509___action, 16127};
+void parser___ReduceAction512___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16225, LOCATE_parser___ReduceAction512___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31111,10 +31325,10 @@ void parser___ReduceAction509___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction509___action, 16135); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction512___action, LOCATE_parser, 16233); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction509___action, 16137); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction512___action, LOCATE_parser, 16235); nit_exit(1);}
   variable9 = NEW_parser_prod___AGeExpr___init_ageexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AGeExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -31123,16 +31337,16 @@ void parser___ReduceAction509___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction509___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction509___init, 16145};
+void parser___ReduceAction512___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16243, LOCATE_parser___ReduceAction512___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction509].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction509].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction512].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction512].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction510___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction510___action, 16149};
+void parser___ReduceAction513___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16247, LOCATE_parser___ReduceAction513___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31156,10 +31370,10 @@ void parser___ReduceAction510___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction510___action, 16157); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction513___action, LOCATE_parser, 16255); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction510___action, 16159); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction513___action, LOCATE_parser, 16257); nit_exit(1);}
   variable9 = NEW_parser_prod___AStarshipExpr___init_astarshipexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AStarshipExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -31168,16 +31382,16 @@ void parser___ReduceAction510___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction510___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction510___init, 16167};
+void parser___ReduceAction513___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16265, LOCATE_parser___ReduceAction513___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction510].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction510].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction513].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction513].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction511___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction511___action, 16171};
+void parser___ReduceAction514___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16269, LOCATE_parser___ReduceAction514___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31201,10 +31415,10 @@ void parser___ReduceAction511___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction511___action, 16179); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction514___action, LOCATE_parser, 16277); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable7 /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction511___action, 16181); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction514___action, LOCATE_parser, 16279); nit_exit(1);}
   variable9 = NEW_parser_prod___AIsaExpr___init_aisaexpr( variable6 /*pexprnode2*/,  variable7 /*ptypenode3*/); /*new AIsaExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -31213,16 +31427,16 @@ void parser___ReduceAction511___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction511___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction511___init, 16189};
+void parser___ReduceAction514___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16287, LOCATE_parser___ReduceAction514___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction511].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction511].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction514].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction514].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction512___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction512___action, 16193};
+void parser___ReduceAction515___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16291, LOCATE_parser___ReduceAction515___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31235,23 +31449,23 @@ void parser___ReduceAction512___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction512___action, 16198); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction515___action, LOCATE_parser, 16296); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(96)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction512___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction512___init, 16202};
+void parser___ReduceAction515___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16300, LOCATE_parser___ReduceAction515___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction512].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction512].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction515].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction515].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction513___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction513___action, 16206};
+void parser___ReduceAction516___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16304, LOCATE_parser___ReduceAction516___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31275,10 +31489,10 @@ void parser___ReduceAction513___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction513___action, 16214); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction516___action, LOCATE_parser, 16312); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction513___action, 16216); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction516___action, LOCATE_parser, 16314); nit_exit(1);}
   variable9 = NEW_parser_prod___APlusExpr___init_aplusexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new APlusExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -31287,16 +31501,16 @@ void parser___ReduceAction513___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction513___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction513___init, 16224};
+void parser___ReduceAction516___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16322, LOCATE_parser___ReduceAction516___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction513].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction513].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction516].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction516].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction514___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction514___action, 16228};
+void parser___ReduceAction517___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16326, LOCATE_parser___ReduceAction517___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31320,10 +31534,10 @@ void parser___ReduceAction514___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction514___action, 16236); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction517___action, LOCATE_parser, 16334); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction514___action, 16238); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction517___action, LOCATE_parser, 16336); nit_exit(1);}
   variable9 = NEW_parser_prod___AMinusExpr___init_aminusexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AMinusExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -31332,16 +31546,16 @@ void parser___ReduceAction514___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction514___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction514___init, 16246};
+void parser___ReduceAction517___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16344, LOCATE_parser___ReduceAction517___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction514].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction514].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction517].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction517].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction515___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction515___action, 16250};
+void parser___ReduceAction518___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16348, LOCATE_parser___ReduceAction518___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31354,23 +31568,23 @@ void parser___ReduceAction515___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction515___action, 16255); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction518___action, LOCATE_parser, 16353); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(97)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction515___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction515___init, 16259};
+void parser___ReduceAction518___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16357, LOCATE_parser___ReduceAction518___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction515].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction515].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction518].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction518].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction516___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction516___action, 16263};
+void parser___ReduceAction519___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16361, LOCATE_parser___ReduceAction519___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31394,10 +31608,10 @@ void parser___ReduceAction516___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction516___action, 16271); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction519___action, LOCATE_parser, 16369); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction516___action, 16273); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction519___action, LOCATE_parser, 16371); nit_exit(1);}
   variable9 = NEW_parser_prod___AStarExpr___init_astarexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new AStarExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -31406,16 +31620,16 @@ void parser___ReduceAction516___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction516___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction516___init, 16281};
+void parser___ReduceAction519___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16379, LOCATE_parser___ReduceAction519___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction516].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction516].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction519].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction519].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction517___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction517___action, 16285};
+void parser___ReduceAction520___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16383, LOCATE_parser___ReduceAction520___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31439,10 +31653,10 @@ void parser___ReduceAction517___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction517___action, 16293); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction520___action, LOCATE_parser, 16391); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction517___action, 16295); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction520___action, LOCATE_parser, 16393); nit_exit(1);}
   variable9 = NEW_parser_prod___ASlashExpr___init_aslashexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new ASlashExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -31451,16 +31665,16 @@ void parser___ReduceAction517___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction517___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction517___init, 16303};
+void parser___ReduceAction520___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16401, LOCATE_parser___ReduceAction520___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction517].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction517].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction520].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction520].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction518___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction518___action, 16307};
+void parser___ReduceAction521___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16405, LOCATE_parser___ReduceAction521___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31484,10 +31698,10 @@ void parser___ReduceAction518___action(val_t  self, val_t  param0) {
   variable5 = variable6;
   variable6 =  variable5 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction518___action, 16315); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction521___action, LOCATE_parser, 16413); nit_exit(1);}
   variable7 =  variable2 /*nodearraylist4*/;
   variable8 = TAG_Bool(( variable7 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable7 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction518___action, 16317); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction521___action, LOCATE_parser, 16415); nit_exit(1);}
   variable9 = NEW_parser_prod___APercentExpr___init_apercentexpr( variable6 /*pexprnode2*/,  variable7 /*pexprnode3*/); /*new APercentExpr*/
   variable8 = variable9;
   variable1 =  variable8 /*pexprnode1*/ /*node_list=*/;
@@ -31496,16 +31710,16 @@ void parser___ReduceAction518___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction518___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction518___init, 16325};
+void parser___ReduceAction521___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16423, LOCATE_parser___ReduceAction521___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction518].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction518].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction521].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction521].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction519___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction519___action, 16329};
+void parser___ReduceAction522___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16427, LOCATE_parser___ReduceAction522___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31518,23 +31732,23 @@ void parser___ReduceAction519___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction519___action, 16334); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction522___action, LOCATE_parser, 16432); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(98)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction519___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction519___init, 16338};
+void parser___ReduceAction522___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16436, LOCATE_parser___ReduceAction522___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction519].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction519].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction522].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction522].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction520___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction520___action, 16342};
+void parser___ReduceAction523___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16440, LOCATE_parser___ReduceAction523___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31555,10 +31769,10 @@ void parser___ReduceAction520___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tminusnode2*/==NIT_NULL) || VAL_ISA( variable5 /*tminusnode2*/, COLOR_TMinus, ID_TMinus)) /*cast TMinus*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction520___action, 16349); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction523___action, LOCATE_parser, 16447); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist3*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction520___action, 16351); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction523___action, LOCATE_parser, 16449); nit_exit(1);}
   variable8 = NEW_parser_prod___AUminusExpr___init_auminusexpr( variable5 /*tminusnode2*/,  variable6 /*pexprnode3*/); /*new AUminusExpr*/
   variable7 = variable8;
   variable1 =  variable7 /*pexprnode1*/ /*node_list=*/;
@@ -31567,16 +31781,16 @@ void parser___ReduceAction520___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction520___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction520___init, 16359};
+void parser___ReduceAction523___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16457, LOCATE_parser___ReduceAction523___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction520].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction520].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction523].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction523].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction521___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction521___action, 16363};
+void parser___ReduceAction524___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16461, LOCATE_parser___ReduceAction524___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31597,10 +31811,10 @@ void parser___ReduceAction521___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tkwoncenode2*/==NIT_NULL) || VAL_ISA( variable5 /*tkwoncenode2*/, COLOR_TKwonce, ID_TKwonce)) /*cast TKwonce*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction521___action, 16370); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction524___action, LOCATE_parser, 16468); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist3*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode3*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode3*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction521___action, 16372); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction524___action, LOCATE_parser, 16470); nit_exit(1);}
   variable8 = NEW_parser_prod___AOnceExpr___init_aonceexpr( variable5 /*tkwoncenode2*/,  variable6 /*pexprnode3*/); /*new AOnceExpr*/
   variable7 = variable8;
   variable1 =  variable7 /*pexprnode1*/ /*node_list=*/;
@@ -31609,16 +31823,16 @@ void parser___ReduceAction521___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction521___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction521___init, 16380};
+void parser___ReduceAction524___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16478, LOCATE_parser___ReduceAction524___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction521].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction521].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction524].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction524].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction522___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction522___action, 16384};
+void parser___ReduceAction525___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16482, LOCATE_parser___ReduceAction525___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31631,23 +31845,23 @@ void parser___ReduceAction522___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction522___action, 16389); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction525___action, LOCATE_parser, 16487); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(99)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction522___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction522___init, 16393};
+void parser___ReduceAction525___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16491, LOCATE_parser___ReduceAction525___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction522].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction522].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction525].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction525].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction523___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction523___action, 16397};
+void parser___ReduceAction526___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16495, LOCATE_parser___ReduceAction526___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31671,24 +31885,24 @@ void parser___ReduceAction523___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable5 = variable6;
-  variable7 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable7 = NEW_array___Array___init(); /*new Array[E]*/
   variable6 = variable7;
   variable7 =  variable5 /*nodearraylist1*/;
   variable8 = TAG_Bool(( variable7 /*tkwnewnode2*/==NIT_NULL) || VAL_ISA( variable7 /*tkwnewnode2*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction523___action, 16406); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction526___action, LOCATE_parser, 16504); nit_exit(1);}
   variable8 =  variable3 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable8 /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction523___action, 16408); nit_exit(1);}
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction526___action, LOCATE_parser, 16506); nit_exit(1);}
   variable9 =  variable2 /*nodearraylist4*/;
   variable10 = TAG_Bool(( variable9 /*listnode5*/==NIT_NULL) || VAL_ISA( variable9 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction523___action, 16410); nit_exit(1);}
-  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable10)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction526___action, LOCATE_parser, 16508); nit_exit(1);}
+  variable10 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable9 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable9 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable9 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable9 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable9 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable10)) { /*if*/
-    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode6*/) /*Array::is_empty*/;
+    variable10 = ((array___AbstractArray___is_empty_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable6 /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable10)) { /*if*/
       variable6 =  variable9 /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode6*/,  variable9 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable6 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable6 /*listnode6*/,  variable9 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable11 = NEW_parser_prod___ANewExpr___init_anewexpr( variable7 /*tkwnewnode2*/,  variable8 /*ptypenode3*/,  NIT_NULL /*null*/,  variable6 /*listnode6*/); /*new ANewExpr*/
@@ -31699,16 +31913,16 @@ void parser___ReduceAction523___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction523___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction523___init, 16427};
+void parser___ReduceAction526___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16525, LOCATE_parser___ReduceAction526___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction523].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction523].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction526].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction526].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction524___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction524___action, 16431};
+void parser___ReduceAction527___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16529, LOCATE_parser___ReduceAction527___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31726,10 +31940,10 @@ void parser___ReduceAction524___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable4 =  variable3 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable4 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction524___action, 16437); nit_exit(1);}
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction527___action, LOCATE_parser, 16535); nit_exit(1);}
   variable5 =  variable2 /*nodearraylist2*/;
   variable6 = TAG_Bool(( variable5 /*tattridnode3*/==NIT_NULL) || VAL_ISA( variable5 /*tattridnode3*/, COLOR_TAttrid, ID_TAttrid)) /*cast TAttrid*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction524___action, 16439); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction527___action, LOCATE_parser, 16537); nit_exit(1);}
   variable7 = NEW_parser_prod___AAttrExpr___init_aattrexpr( variable4 /*pexprnode2*/,  variable5 /*tattridnode3*/); /*new AAttrExpr*/
   variable6 = variable7;
   variable1 =  variable6 /*pexprnode1*/ /*node_list=*/;
@@ -31738,16 +31952,16 @@ void parser___ReduceAction524___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction524___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction524___init, 16447};
+void parser___ReduceAction527___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16545, LOCATE_parser___ReduceAction527___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction524].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction524].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction527].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction527].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction525___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction525___action, 16451};
+void parser___ReduceAction528___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16549, LOCATE_parser___ReduceAction528___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31768,24 +31982,24 @@ void parser___ReduceAction525___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable6 =  variable4 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction525___action, 16459); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction528___action, LOCATE_parser, 16557); nit_exit(1);}
   variable7 =  variable3 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*tidnode3*/==NIT_NULL) || VAL_ISA( variable7 /*tidnode3*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction525___action, 16461); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction528___action, LOCATE_parser, 16559); nit_exit(1);}
   variable8 =  variable2 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*listnode4*/==NIT_NULL) || VAL_ISA( variable8 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction525___action, 16463); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction528___action, LOCATE_parser, 16561); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable5 =  variable8 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable8 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable8 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable10 = NEW_parser_prod___ACallExpr___init_acallexpr( variable6 /*pexprnode2*/,  variable7 /*tidnode3*/,  variable5 /*listnode5*/); /*new ACallExpr*/
@@ -31796,16 +32010,16 @@ void parser___ReduceAction525___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction525___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction525___init, 16479};
+void parser___ReduceAction528___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16577, LOCATE_parser___ReduceAction528___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction525].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction525].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction528].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction528].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction526___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction526___action, 16483};
+void parser___ReduceAction529___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16581, LOCATE_parser___ReduceAction529___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31822,21 +32036,21 @@ void parser___ReduceAction526___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable5 /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction526___action, 16490); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction529___action, LOCATE_parser, 16588); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*listnode4*/==NIT_NULL) || VAL_ISA( variable6 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction526___action, 16492); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction529___action, LOCATE_parser, 16590); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable6 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable6 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode5*/,  variable6 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable8 = NEW_parser_prod___ASuperExpr___init_asuperexpr( NIT_NULL /*null*/,  variable5 /*tkwsupernode3*/,  variable4 /*listnode5*/); /*new ASuperExpr*/
@@ -31847,16 +32061,16 @@ void parser___ReduceAction526___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction526___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction526___init, 16508};
+void parser___ReduceAction529___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16606, LOCATE_parser___ReduceAction529___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction526].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction526].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction529].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction529].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction527___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction527___action, 16512};
+void parser___ReduceAction530___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16610, LOCATE_parser___ReduceAction530___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31877,24 +32091,24 @@ void parser___ReduceAction527___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable6 =  variable4 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pqualifiednode2*/==NIT_NULL) || VAL_ISA( variable6 /*pqualifiednode2*/, COLOR_PQualified, ID_PQualified)) /*cast PQualified*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction527___action, 16520); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction530___action, LOCATE_parser, 16618); nit_exit(1);}
   variable7 =  variable3 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*tkwsupernode3*/==NIT_NULL) || VAL_ISA( variable7 /*tkwsupernode3*/, COLOR_TKwsuper, ID_TKwsuper)) /*cast TKwsuper*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction527___action, 16522); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction530___action, LOCATE_parser, 16620); nit_exit(1);}
   variable8 =  variable2 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*listnode4*/==NIT_NULL) || VAL_ISA( variable8 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction527___action, 16524); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction530___action, LOCATE_parser, 16622); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable5 =  variable8 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable8 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable8 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable10 = NEW_parser_prod___ASuperExpr___init_asuperexpr( variable6 /*pqualifiednode2*/,  variable7 /*tkwsupernode3*/,  variable5 /*listnode5*/); /*new ASuperExpr*/
@@ -31905,16 +32119,16 @@ void parser___ReduceAction527___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction527___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction527___init, 16540};
+void parser___ReduceAction530___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16638, LOCATE_parser___ReduceAction530___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction527].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction527].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction530].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction530].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction528___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction528___action, 16544};
+void parser___ReduceAction531___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16642, LOCATE_parser___ReduceAction531___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -31935,24 +32149,24 @@ void parser___ReduceAction528___action(val_t  self, val_t  param0) {
   variable3 = variable4;
   variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable4 = variable5;
-  variable6 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable6 = NEW_array___Array___init(); /*new Array[E]*/
   variable5 = variable6;
   variable6 =  variable4 /*nodearraylist1*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction528___action, 16552); nit_exit(1);}
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction531___action, LOCATE_parser, 16650); nit_exit(1);}
   variable7 =  variable3 /*nodearraylist2*/;
   variable8 = TAG_Bool(( variable7 /*tkwinitnode3*/==NIT_NULL) || VAL_ISA( variable7 /*tkwinitnode3*/, COLOR_TKwinit, ID_TKwinit)) /*cast TKwinit*/;
-  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction528___action, 16554); nit_exit(1);}
+  if (!UNTAG_Bool(variable8)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction531___action, LOCATE_parser, 16652); nit_exit(1);}
   variable8 =  variable2 /*nodearraylist3*/;
   variable9 = TAG_Bool(( variable8 /*listnode4*/==NIT_NULL) || VAL_ISA( variable8 /*listnode4*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction528___action, 16556); nit_exit(1);}
-  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable9)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction531___action, LOCATE_parser, 16654); nit_exit(1);}
+  variable9 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable8 /*listnode4*/ ==  NIT_NULL /*null*/) || (( variable8 /*listnode4*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable8 /*listnode4*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable8 /*listnode4*/,COLOR_kernel___Object_____eqeq))( variable8 /*listnode4*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable9)) { /*if*/
-    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*Array::is_empty*/;
+    variable9 = ((array___AbstractArray___is_empty_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___Collection___is_empty))( variable5 /*listnode5*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable9)) { /*if*/
       variable5 =  variable8 /*listnode4*/ /*listnode5=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable8 /*listnode4*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable5 /*listnode5*/,COLOR_abstract_collection___IndexedCollection___append))( variable5 /*listnode5*/,  variable8 /*listnode4*/) /*IndexedCollection::append*/;
     }
   }
   variable10 = NEW_parser_prod___AInitExpr___init_ainitexpr( variable6 /*pexprnode2*/,  variable7 /*tkwinitnode3*/,  variable5 /*listnode5*/); /*new AInitExpr*/
@@ -31963,16 +32177,16 @@ void parser___ReduceAction528___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction528___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction528___init, 16572};
+void parser___ReduceAction531___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16670, LOCATE_parser___ReduceAction531___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction528].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction528].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction531].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction531].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction529___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction529___action, 16576};
+void parser___ReduceAction532___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16674, LOCATE_parser___ReduceAction532___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32006,27 +32220,27 @@ void parser___ReduceAction529___action(val_t  self, val_t  param0) {
   variable7 = variable8;
   variable9 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable8 = variable9;
-  variable10 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable10 = NEW_array___Array___init(); /*new Array[E]*/
   variable9 = variable10;
   variable10 =  variable8 /*nodearraylist1*/;
   variable11 = TAG_Bool(( variable10 /*tkwnewnode2*/==NIT_NULL) || VAL_ISA( variable10 /*tkwnewnode2*/, COLOR_TKwnew, ID_TKwnew)) /*cast TKwnew*/;
-  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction529___action, 16588); nit_exit(1);}
+  if (!UNTAG_Bool(variable11)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction532___action, LOCATE_parser, 16686); nit_exit(1);}
   variable11 =  variable6 /*nodearraylist3*/;
   variable12 = TAG_Bool(( variable11 /*ptypenode3*/==NIT_NULL) || VAL_ISA( variable11 /*ptypenode3*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction529___action, 16590); nit_exit(1);}
+  if (!UNTAG_Bool(variable12)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction532___action, LOCATE_parser, 16688); nit_exit(1);}
   variable12 =  variable3 /*nodearraylist6*/;
   variable13 = TAG_Bool(( variable12 /*tidnode4*/==NIT_NULL) || VAL_ISA( variable12 /*tidnode4*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction529___action, 16592); nit_exit(1);}
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction532___action, LOCATE_parser, 16690); nit_exit(1);}
   variable13 =  variable2 /*nodearraylist7*/;
   variable14 = TAG_Bool(( variable13 /*listnode5*/==NIT_NULL) || VAL_ISA( variable13 /*listnode5*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction529___action, 16594); nit_exit(1);}
-  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*listnode5*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable13 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*listnode5*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction532___action, LOCATE_parser, 16692); nit_exit(1);}
+  variable14 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable13 /*listnode5*/ ==  NIT_NULL /*null*/) || (( variable13 /*listnode5*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable13 /*listnode5*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable13 /*listnode5*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable13 /*listnode5*/,COLOR_kernel___Object_____eqeq))( variable13 /*listnode5*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable14)) { /*if*/
-    variable14 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode6*/) /*Array::is_empty*/;
+    variable14 = ((array___AbstractArray___is_empty_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___Collection___is_empty))( variable9 /*listnode6*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable14)) { /*if*/
       variable9 =  variable13 /*listnode5*/ /*listnode6=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode6*/,  variable13 /*listnode5*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable9 /*listnode6*/,COLOR_abstract_collection___IndexedCollection___append))( variable9 /*listnode6*/,  variable13 /*listnode5*/) /*IndexedCollection::append*/;
     }
   }
   variable15 = NEW_parser_prod___ANewExpr___init_anewexpr( variable10 /*tkwnewnode2*/,  variable11 /*ptypenode3*/,  variable12 /*tidnode4*/,  variable9 /*listnode6*/); /*new ANewExpr*/
@@ -32037,16 +32251,16 @@ void parser___ReduceAction529___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction529___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction529___init, 16611};
+void parser___ReduceAction532___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16709, LOCATE_parser___ReduceAction532___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction529].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction529].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction532].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction532].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction530___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction530___action, 16615};
+void parser___ReduceAction533___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16713, LOCATE_parser___ReduceAction533___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32060,7 +32274,7 @@ void parser___ReduceAction530___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwselfnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwselfnode2*/, COLOR_TKwself, ID_TKwself)) /*cast TKwself*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction530___action, 16620); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction533___action, LOCATE_parser, 16718); nit_exit(1);}
   variable5 = NEW_parser_prod___ASelfExpr___init_aselfexpr( variable3 /*tkwselfnode2*/); /*new ASelfExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -32069,16 +32283,16 @@ void parser___ReduceAction530___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction530___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction530___init, 16627};
+void parser___ReduceAction533___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16725, LOCATE_parser___ReduceAction533___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction530].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction530].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction533].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction533].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction531___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction531___action, 16631};
+void parser___ReduceAction534___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16729, LOCATE_parser___ReduceAction534___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32092,7 +32306,7 @@ void parser___ReduceAction531___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwtruenode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwtruenode2*/, COLOR_TKwtrue, ID_TKwtrue)) /*cast TKwtrue*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction531___action, 16636); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction534___action, LOCATE_parser, 16734); nit_exit(1);}
   variable5 = NEW_parser_prod___ATrueExpr___init_atrueexpr( variable3 /*tkwtruenode2*/); /*new ATrueExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -32101,16 +32315,16 @@ void parser___ReduceAction531___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction531___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction531___init, 16643};
+void parser___ReduceAction534___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16741, LOCATE_parser___ReduceAction534___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction531].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction531].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction534].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction534].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction532___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction532___action, 16647};
+void parser___ReduceAction535___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16745, LOCATE_parser___ReduceAction535___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32124,7 +32338,7 @@ void parser___ReduceAction532___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwfalsenode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwfalsenode2*/, COLOR_TKwfalse, ID_TKwfalse)) /*cast TKwfalse*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction532___action, 16652); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction535___action, LOCATE_parser, 16750); nit_exit(1);}
   variable5 = NEW_parser_prod___AFalseExpr___init_afalseexpr( variable3 /*tkwfalsenode2*/); /*new AFalseExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -32133,16 +32347,16 @@ void parser___ReduceAction532___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction532___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction532___init, 16659};
+void parser___ReduceAction535___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16757, LOCATE_parser___ReduceAction535___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction532].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction532].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction535].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction535].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction533___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction533___action, 16663};
+void parser___ReduceAction536___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16761, LOCATE_parser___ReduceAction536___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32156,7 +32370,7 @@ void parser___ReduceAction533___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tkwnullnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tkwnullnode2*/, COLOR_TKwnull, ID_TKwnull)) /*cast TKwnull*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction533___action, 16668); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction536___action, LOCATE_parser, 16766); nit_exit(1);}
   variable5 = NEW_parser_prod___ANullExpr___init_anullexpr( variable3 /*tkwnullnode2*/); /*new ANullExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -32165,16 +32379,16 @@ void parser___ReduceAction533___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction533___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction533___init, 16675};
+void parser___ReduceAction536___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16773, LOCATE_parser___ReduceAction536___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction533].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction533].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction536].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction536].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction534___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction534___action, 16679};
+void parser___ReduceAction537___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16777, LOCATE_parser___ReduceAction537___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32188,7 +32402,7 @@ void parser___ReduceAction534___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tnumbernode2*/==NIT_NULL) || VAL_ISA( variable3 /*tnumbernode2*/, COLOR_TNumber, ID_TNumber)) /*cast TNumber*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction534___action, 16684); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction537___action, LOCATE_parser, 16782); nit_exit(1);}
   variable5 = NEW_parser_prod___AIntExpr___init_aintexpr( variable3 /*tnumbernode2*/); /*new AIntExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -32197,16 +32411,16 @@ void parser___ReduceAction534___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction534___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction534___init, 16691};
+void parser___ReduceAction537___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16789, LOCATE_parser___ReduceAction537___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction534].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction534].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction537].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction537].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction535___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction535___action, 16695};
+void parser___ReduceAction538___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16793, LOCATE_parser___ReduceAction538___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32220,7 +32434,7 @@ void parser___ReduceAction535___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tfloatnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tfloatnode2*/, COLOR_TFloat, ID_TFloat)) /*cast TFloat*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction535___action, 16700); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction538___action, LOCATE_parser, 16798); nit_exit(1);}
   variable5 = NEW_parser_prod___AFloatExpr___init_afloatexpr( variable3 /*tfloatnode2*/); /*new AFloatExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -32229,16 +32443,16 @@ void parser___ReduceAction535___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction535___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction535___init, 16707};
+void parser___ReduceAction538___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16805, LOCATE_parser___ReduceAction538___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction535].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction535].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction538].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction538].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction536___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction536___action, 16711};
+void parser___ReduceAction539___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16809, LOCATE_parser___ReduceAction539___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32252,7 +32466,7 @@ void parser___ReduceAction536___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tcharnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tcharnode2*/, COLOR_TChar, ID_TChar)) /*cast TChar*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction536___action, 16716); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction539___action, LOCATE_parser, 16814); nit_exit(1);}
   variable5 = NEW_parser_prod___ACharExpr___init_acharexpr( variable3 /*tcharnode2*/); /*new ACharExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -32261,16 +32475,16 @@ void parser___ReduceAction536___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction536___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction536___init, 16723};
+void parser___ReduceAction539___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16821, LOCATE_parser___ReduceAction539___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction536].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction536].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction539].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction539].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction537___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction537___action, 16727};
+void parser___ReduceAction540___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16825, LOCATE_parser___ReduceAction540___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32284,7 +32498,7 @@ void parser___ReduceAction537___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*tstringnode2*/==NIT_NULL) || VAL_ISA( variable3 /*tstringnode2*/, COLOR_TString, ID_TString)) /*cast TString*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction537___action, 16732); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction540___action, LOCATE_parser, 16830); nit_exit(1);}
   variable5 = NEW_parser_prod___AStringExpr___init_astringexpr( variable3 /*tstringnode2*/); /*new AStringExpr*/
   variable4 = variable5;
   variable1 =  variable4 /*pexprnode1*/ /*node_list=*/;
@@ -32293,16 +32507,16 @@ void parser___ReduceAction537___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction537___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction537___init, 16739};
+void parser___ReduceAction540___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16837, LOCATE_parser___ReduceAction540___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction537].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction537].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction540].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction540].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction538___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction538___action, 16743};
+void parser___ReduceAction541___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16841, LOCATE_parser___ReduceAction541___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32315,23 +32529,90 @@ void parser___ReduceAction538___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable3 =  variable2 /*nodearraylist1*/;
   variable4 = TAG_Bool(( variable3 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable3 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction538___action, 16748); nit_exit(1);}
+  if (!UNTAG_Bool(variable4)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction541___action, LOCATE_parser, 16846); nit_exit(1);}
   variable1 =  variable3 /*pexprnode1*/ /*node_list=*/;
   variable4 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable4,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction538___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction538___init, 16752};
+void parser___ReduceAction541___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16850, LOCATE_parser___ReduceAction541___init};
+  trace.prev = tracehead; tracehead = &trace;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction541].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction541].i] = 1;
+  tracehead = trace.prev;
+  return;
+}
+void parser___ReduceAction542___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16854, LOCATE_parser___ReduceAction542___action};
+  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 =  NIT_NULL /*null*/;
+  variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable2 = variable3;
+  variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable3 = variable4;
+  variable5 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable4 = variable5;
+  variable6 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable5 = variable6;
+  variable7 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable6 = variable7;
+  variable8 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable7 = variable8;
+  variable9 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable8 = variable9;
+  variable10 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable9 = variable10;
+  variable11 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable10 = variable11;
+  variable12 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
+  variable11 = variable12;
+  variable12 =  variable11 /*nodearraylist1*/;
+  variable13 = TAG_Bool(( variable12 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable12 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
+  if (!UNTAG_Bool(variable13)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction542___action, LOCATE_parser, 16868); nit_exit(1);}
+  variable13 =  variable8 /*nodearraylist4*/;
+  variable14 = TAG_Bool(( variable13 /*tkwasnode3*/==NIT_NULL) || VAL_ISA( variable13 /*tkwasnode3*/, COLOR_TKwas, ID_TKwas)) /*cast TKwas*/;
+  if (!UNTAG_Bool(variable14)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction542___action, LOCATE_parser, 16870); nit_exit(1);}
+  variable14 =  variable4 /*nodearraylist8*/;
+  variable15 = TAG_Bool(( variable14 /*ptypenode4*/==NIT_NULL) || VAL_ISA( variable14 /*ptypenode4*/, COLOR_PType, ID_PType)) /*cast PType*/;
+  if (!UNTAG_Bool(variable15)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction542___action, LOCATE_parser, 16872); nit_exit(1);}
+  variable16 = NEW_parser_prod___AAsCastExpr___init_aascastexpr( variable12 /*pexprnode2*/,  variable13 /*tkwasnode3*/,  variable14 /*ptypenode4*/); /*new AAsCastExpr*/
+  variable15 = variable16;
+  variable1 =  variable15 /*pexprnode1*/ /*node_list=*/;
+  variable16 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(100)) /*Parser::go_to*/;
+  ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable16,  variable1 /*node_list*/) /*Parser::push*/;
+  tracehead = trace.prev;
+  return;
+}
+void parser___ReduceAction542___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16881, LOCATE_parser___ReduceAction542___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction538].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction538].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction542].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction542].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction539___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction539___action, 16756};
+void parser___ReduceAction543___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16885, LOCATE_parser___ReduceAction543___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32350,23 +32631,23 @@ void parser___ReduceAction539___action(val_t  self, val_t  param0) {
   variable4 = variable5;
   variable5 =  variable4 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable5 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction539___action, 16763); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction543___action, LOCATE_parser, 16892); nit_exit(1);}
   variable1 =  variable5 /*pexprnode1*/ /*node_list=*/;
   variable6 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(101)) /*Parser::go_to*/;
   ((parser___Parser___push_t)CALL( variable0 /*p*/,COLOR_parser___Parser___push))( variable0 /*p*/, variable6,  variable1 /*node_list*/) /*Parser::push*/;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction539___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction539___init, 16767};
+void parser___ReduceAction543___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16896, LOCATE_parser___ReduceAction543___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction539].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction539].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction543].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction543].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction540___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction540___action, 16771};
+void parser___ReduceAction544___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16900, LOCATE_parser___ReduceAction544___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32382,16 +32663,16 @@ void parser___ReduceAction540___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction540___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction540___init, 16779};
+void parser___ReduceAction544___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16908, LOCATE_parser___ReduceAction544___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction540].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction540].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction544].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction544].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction541___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction541___action, 16783};
+void parser___ReduceAction545___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16912, LOCATE_parser___ReduceAction545___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32403,14 +32684,14 @@ void parser___ReduceAction541___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*pimportnode1*/==NIT_NULL) || VAL_ISA( variable4 /*pimportnode1*/, COLOR_PImport, ID_PImport)) /*cast PImport*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction541___action, 16789); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*pimportnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*pimportnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*pimportnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*pimportnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*pimportnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*pimportnode1*/,  NIT_NULL /*null*/) /*PImport::==*/)))))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction545___action, LOCATE_parser, 16918); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*pimportnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*pimportnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*pimportnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*pimportnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*pimportnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*pimportnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*pimportnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*pimportnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable3 /*listnode2*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
@@ -32418,16 +32699,16 @@ void parser___ReduceAction541___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction541___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction541___init, 16796};
+void parser___ReduceAction545___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16925, LOCATE_parser___ReduceAction545___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction541].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction541].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction545].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction545].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction542___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction542___action, 16800};
+void parser___ReduceAction546___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16929, LOCATE_parser___ReduceAction546___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32443,26 +32724,26 @@ void parser___ReduceAction542___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode1*/==NIT_NULL) || VAL_ISA( variable5 /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction542___action, 16807); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction546___action, LOCATE_parser, 16936); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*pimportnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pimportnode2*/, COLOR_PImport, ID_PImport)) /*cast PImport*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction542___action, 16809); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction546___action, LOCATE_parser, 16938); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable5 /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*pimportnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*pimportnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*pimportnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*pimportnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*pimportnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*pimportnode2*/,  NIT_NULL /*null*/) /*PImport::==*/)))))));
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*pimportnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*pimportnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*pimportnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*pimportnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*pimportnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*pimportnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*pimportnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*pimportnode2*/) /*AbstractArray::add*/;
   }
   variable1 =  variable4 /*listnode3*/ /*node_list=*/;
   variable7 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(102)) /*Parser::go_to*/;
@@ -32470,16 +32751,16 @@ void parser___ReduceAction542___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction542___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction542___init, 16823};
+void parser___ReduceAction546___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16952, LOCATE_parser___ReduceAction546___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction542].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction542].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction546].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction546].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction543___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction543___action, 16827};
+void parser___ReduceAction547___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16956, LOCATE_parser___ReduceAction547___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32491,14 +32772,14 @@ void parser___ReduceAction543___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*pclassdefnode1*/==NIT_NULL) || VAL_ISA( variable4 /*pclassdefnode1*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction543___action, 16833); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*pclassdefnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*pclassdefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*pclassdefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*pclassdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*pclassdefnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*pclassdefnode1*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction547___action, LOCATE_parser, 16962); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*pclassdefnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*pclassdefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*pclassdefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*pclassdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*pclassdefnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*pclassdefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*pclassdefnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*pclassdefnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable3 /*listnode2*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(103)) /*Parser::go_to*/;
@@ -32506,16 +32787,16 @@ void parser___ReduceAction543___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction543___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction543___init, 16840};
+void parser___ReduceAction547___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16969, LOCATE_parser___ReduceAction547___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction543].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction543].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction547].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction547].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction544___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction544___action, 16844};
+void parser___ReduceAction548___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16973, LOCATE_parser___ReduceAction548___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32531,26 +32812,26 @@ void parser___ReduceAction544___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode1*/==NIT_NULL) || VAL_ISA( variable5 /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction544___action, 16851); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction548___action, LOCATE_parser, 16980); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*pclassdefnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pclassdefnode2*/, COLOR_PClassdef, ID_PClassdef)) /*cast PClassdef*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction544___action, 16853); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction548___action, LOCATE_parser, 16982); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable5 /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*pclassdefnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*pclassdefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*pclassdefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*pclassdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*pclassdefnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*pclassdefnode2*/,  NIT_NULL /*null*/) /*PClassdef::==*/)))))));
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*pclassdefnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*pclassdefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*pclassdefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*pclassdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*pclassdefnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*pclassdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*pclassdefnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*pclassdefnode2*/) /*AbstractArray::add*/;
   }
   variable1 =  variable4 /*listnode3*/ /*node_list=*/;
   variable7 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(103)) /*Parser::go_to*/;
@@ -32558,16 +32839,16 @@ void parser___ReduceAction544___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction544___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction544___init, 16867};
+void parser___ReduceAction548___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 16996, LOCATE_parser___ReduceAction548___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction544].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction544].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction548].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction548].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction545___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction545___action, 16871};
+void parser___ReduceAction549___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17000, LOCATE_parser___ReduceAction549___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32579,14 +32860,14 @@ void parser___ReduceAction545___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*psuperclassnode1*/==NIT_NULL) || VAL_ISA( variable4 /*psuperclassnode1*/, COLOR_PSuperclass, ID_PSuperclass)) /*cast PSuperclass*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction545___action, 16877); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*psuperclassnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*psuperclassnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*psuperclassnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*psuperclassnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*psuperclassnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*psuperclassnode1*/,  NIT_NULL /*null*/) /*PSuperclass::==*/)))))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction549___action, LOCATE_parser, 17006); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*psuperclassnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*psuperclassnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*psuperclassnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*psuperclassnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*psuperclassnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*psuperclassnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*psuperclassnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*psuperclassnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable3 /*listnode2*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(104)) /*Parser::go_to*/;
@@ -32594,16 +32875,16 @@ void parser___ReduceAction545___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction545___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction545___init, 16884};
+void parser___ReduceAction549___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17013, LOCATE_parser___ReduceAction549___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction545].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction545].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction549].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction549].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction546___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction546___action, 16888};
+void parser___ReduceAction550___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17017, LOCATE_parser___ReduceAction550___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32619,26 +32900,26 @@ void parser___ReduceAction546___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode1*/==NIT_NULL) || VAL_ISA( variable5 /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction546___action, 16895); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction550___action, LOCATE_parser, 17024); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*psuperclassnode2*/==NIT_NULL) || VAL_ISA( variable6 /*psuperclassnode2*/, COLOR_PSuperclass, ID_PSuperclass)) /*cast PSuperclass*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction546___action, 16897); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction550___action, LOCATE_parser, 17026); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable5 /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*psuperclassnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*psuperclassnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*psuperclassnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*psuperclassnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*psuperclassnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*psuperclassnode2*/,  NIT_NULL /*null*/) /*PSuperclass::==*/)))))));
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*psuperclassnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*psuperclassnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*psuperclassnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*psuperclassnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*psuperclassnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*psuperclassnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*psuperclassnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*psuperclassnode2*/) /*AbstractArray::add*/;
   }
   variable1 =  variable4 /*listnode3*/ /*node_list=*/;
   variable7 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(104)) /*Parser::go_to*/;
@@ -32646,16 +32927,16 @@ void parser___ReduceAction546___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction546___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction546___init, 16911};
+void parser___ReduceAction550___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17040, LOCATE_parser___ReduceAction550___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction546].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction546].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction550].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction550].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction547___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction547___action, 16915};
+void parser___ReduceAction551___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17044, LOCATE_parser___ReduceAction551___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32667,14 +32948,14 @@ void parser___ReduceAction547___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*pformaldefnode1*/==NIT_NULL) || VAL_ISA( variable4 /*pformaldefnode1*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction547___action, 16921); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*pformaldefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*pformaldefnode1*/,  NIT_NULL /*null*/) /*PFormaldef::==*/)))))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction551___action, LOCATE_parser, 17050); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*pformaldefnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*pformaldefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*pformaldefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*pformaldefnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*pformaldefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*pformaldefnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*pformaldefnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable3 /*listnode2*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
@@ -32682,16 +32963,16 @@ void parser___ReduceAction547___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction547___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction547___init, 16928};
+void parser___ReduceAction551___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17057, LOCATE_parser___ReduceAction551___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction547].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction547].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction551].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction551].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction548___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction548___action, 16932};
+void parser___ReduceAction552___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17061, LOCATE_parser___ReduceAction552___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32707,26 +32988,26 @@ void parser___ReduceAction548___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode1*/==NIT_NULL) || VAL_ISA( variable5 /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction548___action, 16939); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction552___action, LOCATE_parser, 17068); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*pformaldefnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pformaldefnode2*/, COLOR_PFormaldef, ID_PFormaldef)) /*cast PFormaldef*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction548___action, 16941); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction552___action, LOCATE_parser, 17070); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable5 /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*pformaldefnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*pformaldefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*pformaldefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*pformaldefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*pformaldefnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*pformaldefnode2*/,  NIT_NULL /*null*/) /*PFormaldef::==*/)))))));
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*pformaldefnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*pformaldefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*pformaldefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*pformaldefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*pformaldefnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*pformaldefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*pformaldefnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*pformaldefnode2*/) /*AbstractArray::add*/;
   }
   variable1 =  variable4 /*listnode3*/ /*node_list=*/;
   variable7 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(105)) /*Parser::go_to*/;
@@ -32734,16 +33015,16 @@ void parser___ReduceAction548___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction548___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction548___init, 16955};
+void parser___ReduceAction552___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17084, LOCATE_parser___ReduceAction552___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction548].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction548].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction552].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction552].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction549___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction549___action, 16959};
+void parser___ReduceAction553___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17088, LOCATE_parser___ReduceAction553___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32755,14 +33036,14 @@ void parser___ReduceAction549___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*ppropdefnode1*/==NIT_NULL) || VAL_ISA( variable4 /*ppropdefnode1*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction549___action, 16965); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*ppropdefnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*ppropdefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*ppropdefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*ppropdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*ppropdefnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*ppropdefnode1*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction553___action, LOCATE_parser, 17094); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*ppropdefnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*ppropdefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*ppropdefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*ppropdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*ppropdefnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*ppropdefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*ppropdefnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*ppropdefnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable3 /*listnode2*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(106)) /*Parser::go_to*/;
@@ -32770,16 +33051,16 @@ void parser___ReduceAction549___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction549___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction549___init, 16972};
+void parser___ReduceAction553___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17101, LOCATE_parser___ReduceAction553___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction549].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction549].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction553].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction553].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction550___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction550___action, 16976};
+void parser___ReduceAction554___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17105, LOCATE_parser___ReduceAction554___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32795,26 +33076,26 @@ void parser___ReduceAction550___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode1*/==NIT_NULL) || VAL_ISA( variable5 /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction550___action, 16983); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction554___action, LOCATE_parser, 17112); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*ppropdefnode2*/==NIT_NULL) || VAL_ISA( variable6 /*ppropdefnode2*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction550___action, 16985); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction554___action, LOCATE_parser, 17114); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable5 /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*ppropdefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*ppropdefnode2*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*ppropdefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*ppropdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*ppropdefnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*ppropdefnode2*/) /*AbstractArray::add*/;
   }
   variable1 =  variable4 /*listnode3*/ /*node_list=*/;
   variable7 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(106)) /*Parser::go_to*/;
@@ -32822,16 +33103,16 @@ void parser___ReduceAction550___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction550___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction550___init, 16999};
+void parser___ReduceAction554___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17128, LOCATE_parser___ReduceAction554___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction550].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction550].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction554].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction554].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction551___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction551___action, 17003};
+void parser___ReduceAction555___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17132, LOCATE_parser___ReduceAction555___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32843,14 +33124,14 @@ void parser___ReduceAction551___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*ppropdefnode1*/==NIT_NULL) || VAL_ISA( variable4 /*ppropdefnode1*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction551___action, 17009); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*ppropdefnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*ppropdefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*ppropdefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*ppropdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*ppropdefnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*ppropdefnode1*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction555___action, LOCATE_parser, 17138); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*ppropdefnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*ppropdefnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*ppropdefnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*ppropdefnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*ppropdefnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*ppropdefnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*ppropdefnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*ppropdefnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable3 /*listnode2*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
@@ -32858,16 +33139,16 @@ void parser___ReduceAction551___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction551___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction551___init, 17016};
+void parser___ReduceAction555___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17145, LOCATE_parser___ReduceAction555___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction551].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction551].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction555].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction555].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction552___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction552___action, 17020};
+void parser___ReduceAction556___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17149, LOCATE_parser___ReduceAction556___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32883,26 +33164,26 @@ void parser___ReduceAction552___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode1*/==NIT_NULL) || VAL_ISA( variable5 /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction552___action, 17027); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction556___action, LOCATE_parser, 17156); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*ppropdefnode2*/==NIT_NULL) || VAL_ISA( variable6 /*ppropdefnode2*/, COLOR_PPropdef, ID_PPropdef)) /*cast PPropdef*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction552___action, 17029); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction556___action, LOCATE_parser, 17158); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable5 /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*ppropdefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*ppropdefnode2*/,  NIT_NULL /*null*/) /*PPropdef::==*/)))))));
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*ppropdefnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*ppropdefnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*ppropdefnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*ppropdefnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*ppropdefnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*ppropdefnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*ppropdefnode2*/) /*AbstractArray::add*/;
   }
   variable1 =  variable4 /*listnode3*/ /*node_list=*/;
   variable7 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(107)) /*Parser::go_to*/;
@@ -32910,16 +33191,16 @@ void parser___ReduceAction552___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction552___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction552___init, 17043};
+void parser___ReduceAction556___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17172, LOCATE_parser___ReduceAction556___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction552].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction552].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction556].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction556].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction553___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction553___action, 17047};
+void parser___ReduceAction557___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17176, LOCATE_parser___ReduceAction557___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32931,14 +33212,14 @@ void parser___ReduceAction553___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*pparamnode1*/==NIT_NULL) || VAL_ISA( variable4 /*pparamnode1*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction553___action, 17053); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*pparamnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*pparamnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*pparamnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*pparamnode1*/,  NIT_NULL /*null*/) /*PParam::==*/)))))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction557___action, LOCATE_parser, 17182); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*pparamnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*pparamnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*pparamnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*pparamnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*pparamnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*pparamnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*pparamnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*pparamnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable3 /*listnode2*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(108)) /*Parser::go_to*/;
@@ -32946,16 +33227,16 @@ void parser___ReduceAction553___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction553___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction553___init, 17060};
+void parser___ReduceAction557___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17189, LOCATE_parser___ReduceAction557___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction553].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction553].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction557].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction557].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction554___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction554___action, 17064};
+void parser___ReduceAction558___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17193, LOCATE_parser___ReduceAction558___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -32971,26 +33252,26 @@ void parser___ReduceAction554___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode1*/==NIT_NULL) || VAL_ISA( variable5 /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction554___action, 17071); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction558___action, LOCATE_parser, 17200); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*pparamnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pparamnode2*/, COLOR_PParam, ID_PParam)) /*cast PParam*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction554___action, 17073); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction558___action, LOCATE_parser, 17202); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable5 /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*pparamnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*pparamnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*pparamnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*pparamnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*pparamnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*pparamnode2*/,  NIT_NULL /*null*/) /*PParam::==*/)))))));
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*pparamnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*pparamnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*pparamnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*pparamnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*pparamnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*pparamnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*pparamnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*pparamnode2*/) /*AbstractArray::add*/;
   }
   variable1 =  variable4 /*listnode3*/ /*node_list=*/;
   variable7 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(108)) /*Parser::go_to*/;
@@ -32998,16 +33279,16 @@ void parser___ReduceAction554___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction554___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction554___init, 17087};
+void parser___ReduceAction558___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17216, LOCATE_parser___ReduceAction558___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction554].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction554].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction558].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction558].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction555___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction555___action, 17091};
+void parser___ReduceAction559___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17220, LOCATE_parser___ReduceAction559___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -33019,14 +33300,14 @@ void parser___ReduceAction555___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*ptypenode1*/==NIT_NULL) || VAL_ISA( variable4 /*ptypenode1*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction555___action, 17097); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*ptypenode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*ptypenode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*ptypenode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*ptypenode1*/,  NIT_NULL /*null*/) /*PType::==*/)))))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction559___action, LOCATE_parser, 17226); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*ptypenode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*ptypenode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*ptypenode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*ptypenode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*ptypenode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*ptypenode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*ptypenode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*ptypenode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable3 /*listnode2*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(109)) /*Parser::go_to*/;
@@ -33034,16 +33315,16 @@ void parser___ReduceAction555___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction555___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction555___init, 17104};
+void parser___ReduceAction559___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17233, LOCATE_parser___ReduceAction559___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction555].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction555].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction559].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction559].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction556___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction556___action, 17108};
+void parser___ReduceAction560___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17237, LOCATE_parser___ReduceAction560___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -33059,26 +33340,26 @@ void parser___ReduceAction556___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode1*/==NIT_NULL) || VAL_ISA( variable5 /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction556___action, 17115); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction560___action, LOCATE_parser, 17244); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*ptypenode2*/==NIT_NULL) || VAL_ISA( variable6 /*ptypenode2*/, COLOR_PType, ID_PType)) /*cast PType*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction556___action, 17117); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction560___action, LOCATE_parser, 17246); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable5 /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*ptypenode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*ptypenode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*ptypenode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*ptypenode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*ptypenode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*ptypenode2*/,  NIT_NULL /*null*/) /*PType::==*/)))))));
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*ptypenode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*ptypenode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*ptypenode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*ptypenode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*ptypenode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*ptypenode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*ptypenode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*ptypenode2*/) /*AbstractArray::add*/;
   }
   variable1 =  variable4 /*listnode3*/ /*node_list=*/;
   variable7 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(109)) /*Parser::go_to*/;
@@ -33086,16 +33367,16 @@ void parser___ReduceAction556___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction556___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction556___init, 17131};
+void parser___ReduceAction560___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17260, LOCATE_parser___ReduceAction560___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction556].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction556].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction560].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction560].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction557___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction557___action, 17135};
+void parser___ReduceAction561___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17264, LOCATE_parser___ReduceAction561___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -33107,14 +33388,14 @@ void parser___ReduceAction557___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable4 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction557___action, 17141); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*pexprnode1*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction561___action, LOCATE_parser, 17270); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*pexprnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*pexprnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable3 /*listnode2*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
@@ -33122,16 +33403,16 @@ void parser___ReduceAction557___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction557___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction557___init, 17148};
+void parser___ReduceAction561___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17277, LOCATE_parser___ReduceAction561___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction557].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction557].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction561].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction561].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction558___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction558___action, 17152};
+void parser___ReduceAction562___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17281, LOCATE_parser___ReduceAction562___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -33147,26 +33428,26 @@ void parser___ReduceAction558___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode1*/==NIT_NULL) || VAL_ISA( variable5 /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction558___action, 17159); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction562___action, LOCATE_parser, 17288); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction558___action, 17161); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction562___action, LOCATE_parser, 17290); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable5 /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*pexprnode2*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*pexprnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*pexprnode2*/) /*AbstractArray::add*/;
   }
   variable1 =  variable4 /*listnode3*/ /*node_list=*/;
   variable7 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(110)) /*Parser::go_to*/;
@@ -33174,16 +33455,16 @@ void parser___ReduceAction558___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction558___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction558___init, 17175};
+void parser___ReduceAction562___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17304, LOCATE_parser___ReduceAction562___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction558].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction558].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction562].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction562].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction559___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction559___action, 17179};
+void parser___ReduceAction563___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17308, LOCATE_parser___ReduceAction563___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -33195,18 +33476,18 @@ void parser___ReduceAction559___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*listnode1*/==NIT_NULL) || VAL_ISA( variable4 /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction559___action, 17185); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*listnode1*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable4 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*listnode1*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction563___action, LOCATE_parser, 17314); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    variable5 = ((array___AbstractArray___is_empty_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___Collection___is_empty))( variable3 /*listnode2*/) /*Array::is_empty*/;
+    variable5 = ((array___AbstractArray___is_empty_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___Collection___is_empty))( variable3 /*listnode2*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable5)) { /*if*/
       variable3 =  variable4 /*listnode1*/ /*listnode2=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___IndexedCollection___append))( variable3 /*listnode2*/,  variable4 /*listnode1*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___IndexedCollection___append))( variable3 /*listnode2*/,  variable4 /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
   variable1 =  variable3 /*listnode2*/ /*node_list=*/;
@@ -33215,16 +33496,16 @@ void parser___ReduceAction559___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction559___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction559___init, 17196};
+void parser___ReduceAction563___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17325, LOCATE_parser___ReduceAction563___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction559].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction559].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction563].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction563].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction560___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction560___action, 17200};
+void parser___ReduceAction564___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17329, LOCATE_parser___ReduceAction564___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -33240,30 +33521,30 @@ void parser___ReduceAction560___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode1*/==NIT_NULL) || VAL_ISA( variable5 /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction560___action, 17207); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction564___action, LOCATE_parser, 17336); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*listnode2*/==NIT_NULL) || VAL_ISA( variable6 /*listnode2*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction560___action, 17209); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction564___action, LOCATE_parser, 17338); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable5 /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode2*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable6 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode2*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*listnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*listnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*listnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*listnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*listnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*listnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable6 /*listnode2*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable6 /*listnode2*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable6 /*listnode2*/) /*IndexedCollection::append*/;
     }
   }
   variable1 =  variable4 /*listnode3*/ /*node_list=*/;
@@ -33272,16 +33553,16 @@ void parser___ReduceAction560___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction560___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction560___init, 17227};
+void parser___ReduceAction564___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17356, LOCATE_parser___ReduceAction564___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction560].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction560].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction564].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction564].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction561___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction561___action, 17231};
+void parser___ReduceAction565___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17360, LOCATE_parser___ReduceAction565___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -33293,14 +33574,14 @@ void parser___ReduceAction561___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*pexprnode1*/==NIT_NULL) || VAL_ISA( variable4 /*pexprnode1*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction561___action, 17237); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*pexprnode1*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction565___action, LOCATE_parser, 17366); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*pexprnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*pexprnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*pexprnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*pexprnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*pexprnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*pexprnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*pexprnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable3 /*listnode2*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(112)) /*Parser::go_to*/;
@@ -33308,16 +33589,16 @@ void parser___ReduceAction561___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction561___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction561___init, 17244};
+void parser___ReduceAction565___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17373, LOCATE_parser___ReduceAction565___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction561].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction561].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction565].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction565].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction562___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction562___action, 17248};
+void parser___ReduceAction566___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17377, LOCATE_parser___ReduceAction566___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -33333,26 +33614,26 @@ void parser___ReduceAction562___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode1*/==NIT_NULL) || VAL_ISA( variable5 /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction562___action, 17255); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction566___action, LOCATE_parser, 17384); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*pexprnode2*/==NIT_NULL) || VAL_ISA( variable6 /*pexprnode2*/, COLOR_PExpr, ID_PExpr)) /*cast PExpr*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction562___action, 17257); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction566___action, LOCATE_parser, 17386); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable5 /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*pexprnode2*/,  NIT_NULL /*null*/) /*PExpr::==*/)))))));
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*pexprnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*pexprnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*pexprnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*pexprnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*pexprnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*pexprnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*pexprnode2*/) /*AbstractArray::add*/;
   }
   variable1 =  variable4 /*listnode3*/ /*node_list=*/;
   variable7 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(112)) /*Parser::go_to*/;
@@ -33360,16 +33641,16 @@ void parser___ReduceAction562___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction562___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction562___init, 17271};
+void parser___ReduceAction566___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17400, LOCATE_parser___ReduceAction566___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction562].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction562].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction566].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction566].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction563___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction563___action, 17275};
+void parser___ReduceAction567___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17404, LOCATE_parser___ReduceAction567___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -33381,14 +33662,14 @@ void parser___ReduceAction563___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tidnode1*/==NIT_NULL) || VAL_ISA( variable4 /*tidnode1*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction563___action, 17281); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*tidnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*tidnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*tidnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*tidnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*tidnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*tidnode1*/,  NIT_NULL /*null*/) /*TId::==*/)))))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction567___action, LOCATE_parser, 17410); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*tidnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*tidnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*tidnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*tidnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*tidnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*tidnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*tidnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*tidnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable3 /*listnode2*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
@@ -33396,16 +33677,16 @@ void parser___ReduceAction563___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction563___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction563___init, 17288};
+void parser___ReduceAction567___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17417, LOCATE_parser___ReduceAction567___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction563].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction563].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction567].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction567].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction564___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction564___action, 17292};
+void parser___ReduceAction568___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17421, LOCATE_parser___ReduceAction568___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -33421,26 +33702,26 @@ void parser___ReduceAction564___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode1*/==NIT_NULL) || VAL_ISA( variable5 /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction564___action, 17299); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction568___action, LOCATE_parser, 17428); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*tidnode2*/==NIT_NULL) || VAL_ISA( variable6 /*tidnode2*/, COLOR_TId, ID_TId)) /*cast TId*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction564___action, 17301); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction568___action, LOCATE_parser, 17430); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable5 /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*tidnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*tidnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*tidnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*tidnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*tidnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*tidnode2*/,  NIT_NULL /*null*/) /*TId::==*/)))))));
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*tidnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*tidnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*tidnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*tidnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*tidnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*tidnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*tidnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*tidnode2*/) /*AbstractArray::add*/;
   }
   variable1 =  variable4 /*listnode3*/ /*node_list=*/;
   variable7 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(113)) /*Parser::go_to*/;
@@ -33448,16 +33729,16 @@ void parser___ReduceAction564___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction564___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction564___init, 17315};
+void parser___ReduceAction568___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17444, LOCATE_parser___ReduceAction568___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction564].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction564].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction568].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction568].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction565___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction565___action, 17319};
+void parser___ReduceAction569___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17448, LOCATE_parser___ReduceAction569___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -33469,14 +33750,14 @@ void parser___ReduceAction565___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*tcommentnode1*/==NIT_NULL) || VAL_ISA( variable4 /*tcommentnode1*/, COLOR_TComment, ID_TComment)) /*cast TComment*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction565___action, 17325); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*tcommentnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*tcommentnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*tcommentnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*tcommentnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*tcommentnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*tcommentnode1*/,  NIT_NULL /*null*/) /*TComment::==*/)))))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction569___action, LOCATE_parser, 17454); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*tcommentnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*tcommentnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*tcommentnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*tcommentnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*tcommentnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*tcommentnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*tcommentnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*tcommentnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable3 /*listnode2*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(114)) /*Parser::go_to*/;
@@ -33484,16 +33765,16 @@ void parser___ReduceAction565___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction565___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction565___init, 17332};
+void parser___ReduceAction569___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17461, LOCATE_parser___ReduceAction569___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction565].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction565].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction569].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction569].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction566___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction566___action, 17336};
+void parser___ReduceAction570___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17465, LOCATE_parser___ReduceAction570___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -33509,26 +33790,26 @@ void parser___ReduceAction566___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode1*/==NIT_NULL) || VAL_ISA( variable5 /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction566___action, 17343); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction570___action, LOCATE_parser, 17472); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*tcommentnode2*/==NIT_NULL) || VAL_ISA( variable6 /*tcommentnode2*/, COLOR_TComment, ID_TComment)) /*cast TComment*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction566___action, 17345); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction570___action, LOCATE_parser, 17474); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable5 /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*tcommentnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*tcommentnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*tcommentnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*tcommentnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*tcommentnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*tcommentnode2*/,  NIT_NULL /*null*/) /*TComment::==*/)))))));
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*tcommentnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*tcommentnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*tcommentnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*tcommentnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*tcommentnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*tcommentnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*tcommentnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*tcommentnode2*/) /*AbstractArray::add*/;
   }
   variable1 =  variable4 /*listnode3*/ /*node_list=*/;
   variable7 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(114)) /*Parser::go_to*/;
@@ -33536,16 +33817,16 @@ void parser___ReduceAction566___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction566___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction566___init, 17359};
+void parser___ReduceAction570___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17488, LOCATE_parser___ReduceAction570___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction566].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction566].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction570].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction570].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction567___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction567___action, 17363};
+void parser___ReduceAction571___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17492, LOCATE_parser___ReduceAction571___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -33557,14 +33838,14 @@ void parser___ReduceAction567___action(val_t  self, val_t  param0) {
   variable1 =  NIT_NULL /*null*/;
   variable3 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable2 = variable3;
-  variable4 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable4 = NEW_array___Array___init(); /*new Array[E]*/
   variable3 = variable4;
   variable4 =  variable2 /*nodearraylist1*/;
   variable5 = TAG_Bool(( variable4 /*teolnode1*/==NIT_NULL) || VAL_ISA( variable4 /*teolnode1*/, COLOR_TEol, ID_TEol)) /*cast TEol*/;
-  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction567___action, 17369); nit_exit(1);}
-  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*teolnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*teolnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*teolnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*teolnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*teolnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*teolnode1*/,  NIT_NULL /*null*/) /*TEol::==*/)))))));
+  if (!UNTAG_Bool(variable5)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction571___action, LOCATE_parser, 17498); nit_exit(1);}
+  variable5 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable4 /*teolnode1*/ ==  NIT_NULL /*null*/) || (( variable4 /*teolnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable4 /*teolnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable4 /*teolnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable4 /*teolnode1*/,COLOR_kernel___Object_____eqeq))( variable4 /*teolnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable5)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*teolnode1*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable3 /*listnode2*/,COLOR_abstract_collection___SimpleCollection___add))( variable3 /*listnode2*/,  variable4 /*teolnode1*/) /*AbstractArray::add*/;
   }
   variable1 =  variable3 /*listnode2*/ /*node_list=*/;
   variable5 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
@@ -33572,16 +33853,16 @@ void parser___ReduceAction567___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction567___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction567___init, 17376};
+void parser___ReduceAction571___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17505, LOCATE_parser___ReduceAction571___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction567].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction567].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction571].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction571].i] = 1;
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction568___action(val_t  self, val_t  param0) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction568___action, 17380};
+void parser___ReduceAction572___action(val_t  self, val_t  param0) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17509, LOCATE_parser___ReduceAction572___action};
   val_t variable0;
   val_t variable1;
   val_t variable2;
@@ -33597,26 +33878,26 @@ void parser___ReduceAction568___action(val_t  self, val_t  param0) {
   variable2 = variable3;
   variable4 = ((parser___Parser___pop_t)CALL( variable0 /*p*/,COLOR_parser___Parser___pop))( variable0 /*p*/) /*Parser::pop*/;
   variable3 = variable4;
-  variable5 = NEW_array___Array___init(); /*new Array[Object]*/
+  variable5 = NEW_array___Array___init(); /*new Array[E]*/
   variable4 = variable5;
   variable5 =  variable3 /*nodearraylist1*/;
   variable6 = TAG_Bool(( variable5 /*listnode1*/==NIT_NULL) || VAL_ISA( variable5 /*listnode1*/, COLOR_Array, ID_Array)) /*cast Array[Object]*/;
-  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction568___action, 17387); nit_exit(1);}
+  if (!UNTAG_Bool(variable6)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction572___action, LOCATE_parser, 17516); nit_exit(1);}
   variable6 =  variable2 /*nodearraylist2*/;
   variable7 = TAG_Bool(( variable6 /*teolnode2*/==NIT_NULL) || VAL_ISA( variable6 /*teolnode2*/, COLOR_TEol, ID_TEol)) /*cast TEol*/;
-  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed (%s: %d)\n", "", LOCATE_parser___ReduceAction568___action, 17389); nit_exit(1);}
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && UNTAG_Bool(((array___AbstractArray_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Array::==*/)))));
+  if (!UNTAG_Bool(variable7)) { fprintf(stderr, "Assert%s failed", ""); fprintf(stderr, " in %s (%s:%d)\n", LOCATE_parser___ReduceAction572___action, LOCATE_parser, 17518); nit_exit(1);}
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable5 /*listnode1*/ ==  NIT_NULL /*null*/) || (( variable5 /*listnode1*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable5 /*listnode1*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable5 /*listnode1*/,COLOR_kernel___Object_____eqeq))( variable5 /*listnode1*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*Array::is_empty*/;
+    variable7 = ((array___AbstractArray___is_empty_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___Collection___is_empty))( variable4 /*listnode3*/) /*AbstractArray::is_empty*/;
     if (UNTAG_Bool(variable7)) { /*if*/
       variable4 =  variable5 /*listnode1*/ /*listnode3=*/;
     } else { /*if*/
-      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*Array::append*/;
+      ((abstract_collection___IndexedCollection___append_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___IndexedCollection___append))( variable4 /*listnode3*/,  variable5 /*listnode1*/) /*IndexedCollection::append*/;
     }
   }
-  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*teolnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*teolnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*teolnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*teolnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*teolnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*teolnode2*/,  NIT_NULL /*null*/) /*TEol::==*/)))))));
+  variable7 = TAG_Bool(!UNTAG_Bool(TAG_Bool(( variable6 /*teolnode2*/ ==  NIT_NULL /*null*/) || (( variable6 /*teolnode2*/ != NIT_NULL) && ((((kernel___Object_____eqeq_t)CALL( variable6 /*teolnode2*/,COLOR_kernel___Object_____eqeq))==kernel___Object_____eqeq)?(IS_EQUAL_NN( variable6 /*teolnode2*/, NIT_NULL /*null*/)):(UNTAG_Bool(((kernel___Object_____eqeq_t)CALL( variable6 /*teolnode2*/,COLOR_kernel___Object_____eqeq))( variable6 /*teolnode2*/,  NIT_NULL /*null*/) /*Object::==*/)))))));
   if (UNTAG_Bool(variable7)) { /*if*/
-    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*teolnode2*/) /*Array::add*/;
+    ((array___AbstractArray___add_t)CALL( variable4 /*listnode3*/,COLOR_abstract_collection___SimpleCollection___add))( variable4 /*listnode3*/,  variable6 /*teolnode2*/) /*AbstractArray::add*/;
   }
   variable1 =  variable4 /*listnode3*/ /*node_list=*/;
   variable7 = ((parser___Parser___go_to_t)CALL( variable0 /*p*/,COLOR_parser___Parser___go_to))( variable0 /*p*/,  TAG_Int(115)) /*Parser::go_to*/;
@@ -33624,11 +33905,11 @@ void parser___ReduceAction568___action(val_t  self, val_t  param0) {
   tracehead = trace.prev;
   return;
 }
-void parser___ReduceAction568___init(val_t  self, int* init_table) {
-  struct trace_t trace = {NULL, LOCATE_parser___ReduceAction568___init, 17403};
+void parser___ReduceAction572___init(val_t  self, int* init_table) {
+  struct trace_t trace = {NULL, LOCATE_parser, 17532, LOCATE_parser___ReduceAction572___init};
   trace.prev = tracehead; tracehead = &trace;
-  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction568].i]) return;
-  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction568].i] = 1;
+  if (init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction572].i]) return;
+  init_table[VAL2OBJ( self)->vft[INIT_TABLE_POS_ReduceAction572].i] = 1;
   tracehead = trace.prev;
   return;
 }